实现两个链表的合并 数据结构课程设计.doc

实现两个链表的合并 数据结构课程设计.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现两个链表的合并 数据结构课程设计

一、课程设计题目: 实现两个链表的合并建立两个链表A和B,链表元个数分别为m和n个。 假设元分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线表C,使得: 当m=n时,C=x1,y1,x2,y2,…xn,yn,…,xm 当nm时,C=y1,x1,y2,x2,…ym,xm,…,yn 输出线表C用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。 A表(30,41,15,12,56,80)B表(23,56,78,23,12,33,79,90,55) A表(30,41,15,12,56,80,23,12,34)B表(23,56,78,23,12)typedef struct Node { DataType data; struct Node *next; }SLNode; 7.2 单链表的初始化 void ListInitiate(SLNode **head) { /*如果有内存空间,申请头结点空间并使头指针head指向头结点*/ if((*head = (SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1); (*head)-next = NULL;/*尾标记NULL */ } int ListLength(SLNode *head) { SLNode *p = head; /*p指向头结点*/ int size = 0; /*size初始为0*/ while(p-next != NULL) /*循环计数*/ { p = p-next;size ++; } return size; } int ListInsert(SLNode *head,int i,DataType x) { SLNode *p, *q; int j; p = head; j = -1; while(p-next!=NULL ji-1) { p = p-next; j++; } if(j != i - 1) { printf(Eorror: 插入位置参数错!\n); return 0; } if((q = (SLNode *)malloc(sizeof(SLNode))) == NULL) exit(1); q-data = x; q-next = p-next; p-next = q; return 1; }//注:此单链表是带头结点的 int ListDelete(SLNode *head,int i,DataType *x) { SLNode *p, *s; int j; p=head; j = -1; while(p-next != NULL p-next-next!=NULL ji-1) { p=p-next;j++; } if(j!=i-1) { printf(Eorror: 删除位置参数错!\n); return 0; } s = p-next; *x=s-data; p-next = p-next-next; free(s); return 1; } 7.6 从单链表中取数据元素 ListGet(SLNode *head,int i,DataType *x) { SLNode *p; int j; p=head; j=-1; while(p-next!=NULL ji) { p=p-next;j++; } if(j!=i) { printf(Eorror: 取数据元素位置参数出错!\n); return 0; } *x=p-data; return 1; } void Destroy(SLNode **head) { SLNode *p,*p1; p=*head; while(p!=NULL) { p1=p;p=p-next;free(p1); } *head=NULL; } 7.8 单链表测试函数 void SingleList(int a[],int al) { int i,x; SLNode *head; ListInitiate(head); //向单链表插入数据元素 for(i=0;ial;i++) { if(ListInsert(head,i,a[i]) == 0) { printf(Error:插入数据元素错误! \n);return; } } //从单链表取数据元素 printf(结果:); for(i=0; iListLength(head); i++) { if(Li

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档