首页 线性表的基本运算在两种存储结构

线性表的基本运算在两种存储结构

举报
开通vip

线性表的基本运算在两种存储结构线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现 顺序结构 //line.h #ifndef _LINE_H #define _LINE_H #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 10 #define LISTINCREMENT 1 typedef int Status; typedef int ElemType; typedef struct { ElemType *e...

线性表的基本运算在两种存储结构
线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现 顺序结构 //line.h #ifndef _LINE_H #define _LINE_H #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 10 #define LISTINCREMENT 1 typedef int Status; typedef int ElemType; typedef struct { ElemType *elem; int length; int listsize; }Sqlist; //函数声明 extern Status InitList_Sq(Sqlist &L); extern Status Display_Sq(Sqlist &L); extern Status ListInsert_Sq(Sqlist &L,int i,ElemType e); extern Status ListDelete_sq(Sqlist &L,int i,ElemType &e); extern Status LocateElem_sq(Sqlist L,ElemType e); #endif //function.cpp #include #include "line.h" #include #include Status InitList_Sq(Sqlist &L) { L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; } Status Display_Sq(Sqlist &L) { for(int i=0;iL.length+1) return ERROR; if(L.length>=L.listsize){ newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase) exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; } q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L.length; return OK; } Status ListDelete_sq(Sqlist &L,int i,ElemType &e){ int*p; int*q; if(i<1||i>L.length) return ERROR; p=&(L.elem[i]); e=*p; q=L.elem+L.length; for(++p;p<=q;++p) *(p-1)=*p; --L.length; return OK; } Status LocateElem_sq(Sqlist L,ElemType e){ int i=1; int *p; p=L.elem; while (i<=L.length&& (*p++!=e)) ++i; if (i<=L.length){ return i;} else return 0; } //main.cpp #include #include "line.h" #include #include void main() { Sqlist L; int i,j,n,k; ElemType e; char select; if(InitList_Sq(L)==OVERFLOW) printf("分配失败,退出程序!"); else{ printf("输入个数:\n"); scanf("%d",&n); printf("请为初始化顺序表输入%d个整数:\n",n); for(i=0;i #include #include "head.h" using namespace std; Status CreateList_L(LinkList &L, int n) // 逆序输入 n 个数据元素,建立带头结点的单链表 { int i; LNode *p; L=(LinkList) malloc (sizeof (LNode)); L->next = NULL; for (i = n; i>0; --i) { p = (LinkList) malloc (sizeof (LNode)); cin>>p->data;// 输入元素值 p->next = L->next; L->next = p; // 插入到表头 } return OK; } Status GetElem_L(LinkList L,int i,ElemType &e) // L是带头结点的链表的头指针,以 e 返回第 i 个元素 { int j; LNode *p; p = L->next; j = 1; while (p && jnext; ++j; } if ( !p || j>i ) return ERROR; // 第 i 个元素不存在 e = p->data; // 取得第 i 个元素 return OK; } Status ListInsert_L(LinkList &L, int i, ElemType e) // L 为带头结点的单链表的头指针,在链表中第i 个结点之前插入新的元素e { LNode *s; int j; LNode *p; p = L; j = 0; while (p && j < i-1) { p = p->next; ++j; } // 寻找第 i-1 个结点 if (!p || j > i-1) return ERROR; s = (LinkList) malloc ( sizeof (LNode)); // 生成新结点 s->data = e; s->next = p->next; p->next = s; // 插入L中 return OK; } Status ListDelete_L(LinkList L, int i, ElemType &e) // 删除以 L 为头指针(带头结点)的单链表中第 i 个结点 { int j; LNode *p,*q; p = L; j = 0; while (p->next && j < i-1) {p = p->next; ++j; } // 寻找第 i 个结点,并令 p 指向其前趋 if (!(p->next) || j > i-1) return ERROR; // 删除位置不合理 q = p->next; p->next = q->next; // 删除并释放结点 e = q->data; free(q); return OK; } void display_L(LinkList &L,int n)//输出链表数据 {LNode *q; q=L; int i=1; while(i<=n) { cout<next->data<<" "; q=q->next; i++; } } //main.cpp #include #include "head.h" using namespace std; void main() { int i,n,e; LinkList L; char select; cout<<"请输入线性表总个数n:"<>n; cout<<"逆序输入线性表:"<>select; cout<>i; if(GetElem_L(L,i,e)==ERROR) cout<<"输入的值不合法"<>i; cout<<"要插入的数是多少?"<>e; ListInsert_L(L,i,e); cout<<"插入数成功!"<>i; ListDelete_L(L,i,e); display_L(L,--n); cout<
本文档为【线性表的基本运算在两种存储结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_063629
暂无简介~
格式:doc
大小:45KB
软件:Word
页数:15
分类:互联网
上传时间:2011-11-30
浏览量:53