ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:17.18KB ,
资源ID:29014240      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29014240.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构线性表的主要程序代码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构线性表的主要程序代码.docx

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

2、LL;/*建立一个带头结点的单链表,在表尾插入*/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 */*建立一个带头结点的单链表,在表头插入*Cre

3、ate_L(LinkList *L,int n) LinkList *p; int i; Initlist(L); /*单链表初始化 /*需要注意第一个数据插入时的情况 /*Insert the Firset node p = (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(str

4、uct Lnode); printf(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, in

5、t x) LinkList *p,*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(jne

6、xt; if (!p) return 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;

7、L = (LinkList*)malloc(sizeof(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);*/

8、 display(L); getch();2/*无头结点的单链表建立、插入、求长度、插入、删除、输出*/#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=

9、q; /*OutPut*/Link_Display(LinkList *L) LinkList *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)

10、; getch(); 3/*顺序表的建立、查找、插入运算*/#include #include typedef int datatype;#define list_maxsize 20/* define for node struct */typedef struct datatype 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);

11、printf(input SqList.datan); 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-length;/* GetElem L-datai*/int GetElem(SqList *L, int i) if(iL-length) printf(Position Error); return; else return L-datai-1;/* Output

12、the SqList*/void Display_SqList(SqList *L) int i,n; n=ListLength(L); printf(the 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;#def

13、ine list_maxsize 20/* define for node struct */typedef struct datatype 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 the data of SqListn); scanf(%d,&L-data0); while(L-datai!=-1

14、) +i; scanf(%d,&(L-datai); L-length = i;/* the length of SqList*/int ListLength(SqList *L) return L-length;/* GetElem L-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,

15、 *p; if(iL-length) printf(the insert position error); return ; q = &(L-datai-1); /*q为插入位置*/ for(p=&(L-dataL-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)

16、; La_len = ListLength(LA); Lb_len = ListLength(LB); LC-length = La_len+Lb_len; /*for(k=0;klength;k+) LC-datak = 0; */ 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; else if(ai=bj) +k; ListInsert(LC,k,ai); +k; ListInsert(LC,k,bj); +i;+j;

17、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); while(jlength = La_len+Lb_len;/* Output the SqList*/void Display_SqList(SqList *L) int i,n; n=ListLength(L); printf(the length is %d ,n); for(i=0;idatai);/*Main()*/

18、main() SqList *LA , *LB, *LC; Create_SqList(LA); Create_SqList(LB); MergeList(LA,LB,LC); Display_SqList(LC); getch();5/* 用带头结点的循环单链表解决约瑟夫问题 */#include#includetypedef struct Lnode /*定义线性表的单链表存储结构*/ int data; struct Lnode *next;LinkList;/*单链表的初始化*/Initlist(LinkList *L) /*动态申请存储空间*/ L = (LinkList *)mal

19、loc(sizeof(struct Lnode);/*建立头结点*/ L-next = L;/*建立一个带头结点的循环单链表,数据值为1,2,3,.n,在表尾插入*/Create_L(LinkList *L,int n) LinkList *p; int i; Initlist(L); /*单链表初始化 p=L; for(i = n;i0;-i) q = (LinkList*)malloc(sizeof(struct Lnode); q-data = i; /*输入元素值 p-next =q q-next = L; /*插入到表尾 /* Create_L */*单链表值的输出*/void di

20、splay(LinkList *L) /*字母链表的输出*/ LinkList *p; p=L-next; while (p-next!=L) 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(n); Create_L(L,n); display(L); getch(

21、);6/* 无头结点的循环单链表的建立 */#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; p-next = L;/*尾结点指向第一个结点*/*O

22、utPut*/Link_Display(LinkList *L) LinkList *p; p=L; printf(%d ,p-data); p=p-next; while(p-next !=L) 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();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1