(完整版)数据结构线性表的主要程序代码_第1页
(完整版)数据结构线性表的主要程序代码_第2页
(完整版)数据结构线性表的主要程序代码_第3页
(完整版)数据结构线性表的主要程序代码_第4页
(完整版)数据结构线性表的主要程序代码_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构顺序表的主要代码( LIZHULIN )1 /* 有头结点的单链表的初始化、建立(表头插入、表尾插入) 、求长度、插入、删除、输出 */*单链表的初始化、建立、输出 */#include#includetypedef struct Lnode /* 定义线性表的单链表存储结构*/int data;struct Lnode *next;LinkList;/*单链表的初始化 */- 10 -Initlist(LinkList *L) /* 动态申请存储空间 */L = (LinkList *)malloc(sizeof(struct Lnode);/* 建立头结点 */ L-next =

2、NULL;/* 建立一个带头结点的单链表,在表尾插入*/Create_L(LinkList *L,int n)LinkList *p,*q; int i;Initlist(L); /*单链表初始化 */q=L;printf(input the valuen);for(i = n;i0;-i)p = (LinkList*)malloc(sizeof(struct Lnode);scanf(%d,&p-data); /*输入元素值*/q-next = p;p-next = NULL;q=p;/* 插入到表尾*/ /* Create_L */*/* 建立一个带头结点的单链表,在表头插入 Create

3、_L(LinkList *L,int n) LinkList *p; int i;Initlist(L); /*单链表初始化/* 需要注意第一个数据插入时的情况/*Insert the Firset nodep = (LinkList*)malloc(sizeof(struct Lnode);printf(input the valuen);scanf(%d,&p-data); /*输入元素值L-next = p;p-next = NULL;/* 将第二个及后面的数据插入for(i = n-1;i0;-i)p = (LinkList*)malloc(sizeof(struct Lnode);p

4、rintf(input a valuen);scanf(%d,&p-data); /*输入元素值p-next = L-next;L-next = p;/* 插入到表头 /* Create_L */求单链表的长度 */*int Length_LinkList(LinkList *L) LinkList *p;int i=0;p=L-next;while(p!=NULL) i+;p=p-next;return i;/*Length_LinkList*/*在第 i 个结点前插入数据x */Insert_LinkList(LinkList *L, int i, int x) LinkList *p,*

5、s;int j=0;p=L;/* 寻找第 i 个结点 */while(jnext;if (!p) return 0;/* 如果表长小于 i ,则无意义*/* 插入元素 x */s=(LinkList *)malloc(sizeof(struct Lnode);s-data=x;s-next=p-next;p-next=s;/*删除第 i 个元素,并用y 将其值返回 */int Delete_LinkList(LinkList *L, int i) LinkList *p,*q; int y;int j=0;p=L;/* 寻找第 i 个结点 */while(jnext;if (!p) retur

6、n 0;/* 如果表长小于i ,则无意义*/q=p-next;y=q-data;p-next=q-next;free(q) ;return y; /*Delete_LinkList*/*单链表值的输出*/void display(LinkList *L)/* 字母链表的输出 */LinkList *p; p=L-next; while (p!=NULL) printf(%d ,p-data);p=p-next;/* 主程序 */ main()LinkList *L;int len;int n=0;int x=15;int y;int i=4;L = (LinkList*)malloc(size

7、of(struct Lnode);/*L-data = 0;*/L-next =NULL;printf(input the length of L ,nn);scanf(%d,&n);printf(n);Create_L(L,n);Insert_LinkList(L, i, x);/* y=Delete_LinkList(L,i);printf(the delete elment is y=%dn,y);len=Length_LinkList(L);printf(the length of L is %d,len);*/display(L);getch();2 /* 无头结点的单链表建立、插入

8、、求长度、插入、删除、输出 * /#include#includetypedef struct Lnode /* 定义线性表的单链表存储结构*/int data;struct Lnode *next;LinkList;/*Create */Link_Creat(LinkList *L,int n)LinkList *q,*p;int i;printf(input the datan);scanf(%d,&L-data);p=L;for(i=2; idata);p-next=q;q-next=NULL;p=q;/*OutPut*/Link_Display(LinkList *L)LinkList

9、 *p;p=L;while(p!=NULL)printf(%d ,p-data); p=p-next;/*Main()*/main() LinkList *L;int n;L=(LinkList *)malloc(sizeof(struct Lnode);L-data=0;L-next=NULL;printf(Please input the length of LinkList, nn);scanf(%d,&n);Link_Creat(L,n);Link_Display(L);getch();*顺序表的建立、查找、插入运算*/#include #include typedef int dat

10、atype;#define list_maxsize 20/*define for node struct */ typedef structdatatype datalist_maxsize;int length;SqList;/* InitList*/void InitList(SqList *L)L-length = 0; /*Creat SqList*/ void Create_SqList(SqList *L) int i=0;InitList(L);printf(input SqList.datan);scanf(%d,&L-data0);while(L-datai!=-1)+i;

11、scanf(%d,&(L-datai);L-length = i;/*the length of SqList*/ int ListLength(SqList *L) return L-length;/* GetElemL-datai*/int GetElem(SqList *L, int i)if(iL-length) printf(Position Error);return;elsereturn L-datai-1; void Display_SqList(SqList *L)/*Output the SqList*/int i,n;n=ListLength(L);printf(the

12、length is %d ,n);for(i=0;idatai); /*Main()*/ main()SqList *L;/*printf(input the length of SqListn);scanf(%d,&len);*/Create_SqList(L);Display_SqList(L);getch();4*顺序表的归并运算*/#include #include typedef int datatype;#define list_maxsize 20/*define for node struct */typedef structdatatype datalist_maxsize;

13、int length;SqList;/* InitList*/void InitList(SqList *L)L-length = 0;/*Creat SqList*/void Create_SqList(SqList *L)int i=0;InitList(L);printf(input the data of SqListn);scanf(%d,&L-data0);while(L-datai!=-1)+i;scanf(%d,&(L-datai);L-length = i;/*the length of SqList*/ int ListLength(SqList *L) return L-

14、length;/* GetElemL-datai*/int GetElem(SqList *L, int i) if(iL-length) printf(Getelem Position Error); return;return L-datai-1; /* Insert Operation */ void ListInsert(SqList *L,int i, int x)SqList *q, *p;if(iL-length)printf(the insert position error);return ;q = &(L-datai-1);/*q 为插入位置*/for(p=&(L-data

15、L-length-1); p=q; -p)*(p+1) = *p;L-datai-1 = x;+L-length; /* LA and LB Merged LC */ void MergeList(SqList *LA,SqList *LB,SqList *LC) int La_len,Lb_len,ai,bj;int i,j;int k;i=j=1;InitList(LC);La_len = ListLength(LA);Lb_len = ListLength(LB);LC-length = La_len+Lb_len;/*for(k=0;klength;k+)LC-datak = 0; *

16、/k=0;while(i=La_len)&(j=Lb_len) ai= GetElem(LA, i);bj= GetElem(LB, j);if(aibj)+k;ListInsert(LC,k,ai);+i;elseif(ai=bj)+k;ListInsert(LC,k,ai);+k;ListInsert(LC,k,bj);+i;+j;else+k;ListInsert(LC,k,bj);+j;while(i=La_len)/*Append the residual node into LA */ ai= GetElem(LA, i);+i;+k;ListInsert(LC,k,ai);whi

17、le(jlength = La_len+Lb_len; void Display_SqList(SqList *L)/*Output the SqList*/int i,n;n=ListLength(L);printf(the length is %d ,n);for(i=0;idatai);/*Main()*/main()SqList *LA , *LB, *LC;Create_SqList(LA);Create_SqList(LB);MergeList(LA,LB,LC);Display_SqList(LC); getch();- 11 -*用带头结点的循环单链表解决约瑟夫问题*#incl

18、ude#includetypedef struct Lnode /* 定义线性表的单链表存储结构*/int data;struct Lnode *next;LinkList;/*单链表的初始化 */Initlist(LinkList *L) /* 动态申请存储空间 */L = (LinkList *)malloc(sizeof(struct Lnode);/* 建立头结点 */ L-next = L;/*建立一个带头结点的循环单链表,数据值为1,2,3,n,在表尾插入*/Create_L(LinkList *L,int n) LinkList *p; int i;Initlist(L); /*

19、单链表初始化p=L;for(i = n;i0;-i)q = (LinkList*)malloc(sizeof(struct Lnode);q-data = i; /*输入元素值p-next =qq-next = L;/* 插入到表尾 /* Create_L */*void display(LinkList *L) LinkList *p;p=L-next;while (p-next!=L)单链表值的输出 */* 字母链表的输出 */- 16 -printf(%d ,p-data);p=p-next;/* 主程序 */ main()LinkList *L;int n;L = (LinkList*)malloc(sizeof(struct Lnode);/*L-data = 0;*/L-next =L;printf(input the length of L ,nn);scanf(%d,&n);printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论