程序设计单链表的归并
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tankertanker Design
输出数据模块
排序模块
void sort(linklist *s) { linklist *p,*q; elemtype t; p=s->next; while(p!=null) { q=p->next; while(q!=null) { if(p->data>q->data) { t=p->data; p->data=q->data; q->data=t; } q=q->next; } p=p->next; } }
合并链表模块 void add(linklist *s1,linklist *s2) { linklist *p1=s1->next,*p2=s1,*q1=s2>next,*q2=s2; if(s1==null) s1=s2; while(p1!=null&&q1!=null) { if(p1->data<q1->data) { p1=p1->next; p2=p2->next } else { q2->next=q1->next; q1->next=p2->next; p2->next=q1; p2=p2->next; q1=q2->next; } } if(q1!=null) p2->next=q1;}
void display(linklist *s) { linklist *p=s->next; if(s->next==null) printf("the linklist is empty!\n"); else { printf("output the data:\n"); while(p!=null) { printf("%5d",p->data); p=p->next; } } printf("\n"); }
Tankertanker Design
主函数模块 void main() { linklist *s1,*s2; s1=(linklist *)malloc(sizeof(linklist)); ini(s1); create(s1); display(s1); sort(s1); display(s1); s2=(linklist *)malloc(sizeof(linklist)); ini(s2); create(s2); display(s2); sort(s2); display(s2); add(s1,s2); display(s1); }
单链表的归并
Tankertanker Design
流 程 图
Tankertanker Design
数据模块
#include<stdio.h> #include<malloc.h> #define null 0 typedef int elemtype; typedef struct node { elemtype data; struct node *next; }linklist; void ini(linklist *s) { s->next=null; }
创建链表模块Байду номын сангаас
void create(linklist *s) { linklist *p,*q=s; elemtype e; printf("please input the data;\n"); scanf("%d",&e); while(e!=-1) { p=(linklist *)malloc(sizeof(linklist)); p->data=e; q->next=p; q=q->next; scanf("%d",&e); } q->next=null; }
Tankertanker Design
运行结果