2022年线性表、堆栈、链表c语言程序 .pdf
《2022年线性表、堆栈、链表c语言程序 .pdf》由会员分享,可在线阅读,更多相关《2022年线性表、堆栈、链表c语言程序 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE-1#define OVERFLOW-2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10 typedef int ElemType;typedef int Status;typedef struct ElemType*elem;int length;/当前线性表长度int listsize;/线性表的最大长度SqList;/初始化线性表,引用就是别名,用&表示,来自
2、于C+Status InitList_Sq(SqList&L)/分配了一个空线性表的总的空间,返回值为 1 表示分配成功,否则失败返回0 L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);/ElemType elem100;if(!L.elem)exit(OVERFLOW);/空线性表L.length=0;/线性表容量L.listsize=LIST_INIT_SIZE;return OK;/在顺序线性表L 的第 i 个元素之前插入新的元素e,Status ListInsert_Sq(SqList&L,int i,ElemType
3、e)/算法 2.4/i 的合法值为1iListLength_Sq(L)+1 ElemType*p;if(i L.length+1)return ERROR;/i 值不合法 if(L.length=L.listsize)/当前存储空间已满,增加容量ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase)return ERROR;/存储分配失败 L.elem=newbase;/新基址L.listsize+=LISTINCREMENT;/增加存储容量 Elem
4、Type*q=&(L.elemi-1);/q 为插入位置名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -for(p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;/插入位置及之后的元素右移*q=e;/插入 e+L.length;/表长增 1 return OK;/ListInsert_Sq/在顺序线性表L 中删除第i 个元素,并用e 返回其值。Status ListDelete_Sq(SqList&L,int i,ElemType&e)/算法 2.5/i 的合法值为1iListLength_Sq(L)。ElemType*p,*q;if(iL.
5、length)return ERROR;/i 值不合法 p=&(L.elemi-1);/p 为被删除元素的位置e=*p;/被删除元素的值赋给e q=L.elem+L.length-1;/表尾元素的位置for(+p;p=q;+p)*(p-1)=*p;/被删除元素之后的元素左移-L.length;/表长减 1 return OK;/ListDelete_Sq/已知顺序线性表La 和 Lb 的元素按值非递减排列。void MergeList_Sq(SqList La,SqList Lb,SqList&Lc)/算法 2.7/归并 La 和 Lb 得到新的顺序线性表Lc,Lc 的元素也按值非递减排列。E
6、lemType*pa,*pb,*pc,*pa_last,*pb_last;pa=La.elem;pb=Lb.elem;Lc.listsize=Lc.length=La.length+Lb.length;pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType);if(!Lc.elem)exit(OVERFLOW);/存储分配失败 pa_last=La.elem+La.length-1;pb_last=Lb.elem+Lb.length-1;while(pa=pa_last&pb=pb_last)/归并if(*pa=*pb)*pc+=*pa
7、+;else *pc+=*pb+;while(pa=pa_last)*pc+=*pa+;/插入 La 的剩余元素 while(pb=pb_last)*pc+=*pb+;/插入 Lb 的剩余元素 /MergeList 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -/线性表遍历void TranverseList_Sq(SqList&L)for(int counter=0;counterL.length;counter+)printf(%d,L.elemcounter);printf(n);void main()SqList L;if(!InitList_Sq(L)pri
8、ntf(线性表创建失败n);exit(ERROR);int length;printf(请输入元素个数n);scanf(%d,&length);printf(请输入%d 个元素 n,length);for(int counter=0;counterlength;counter+)scanf(%d,&L.elemcounter);L.length=length;printf(线性表中元素是n);TranverseList_Sq(L);printf(请输入插入元素的位置n);int position;scanf(%d,&position);printf(请输入插入元素的值n);ElemType v
9、alue;scanf(%d,&value);ListInsert_Sq(L,position,value);printf(插入新元素后,线性表中元素是n);TranverseList_Sq(L);#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE-1#define OVERFLOW-2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10 typedef int ElemType;typedef int Status;名
10、师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -typedef struct SElemType*base;SElemType*top;int stacksize;SqStack;Status InitStack(SqStack&S)S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType);if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;Status Push(SqStack&S,SElemType e)i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年线性表、堆栈、链表c语言程序 2022 线性 堆栈 链表 语言 程序
限制150内