数据结构课程设计报告附代码_第1页
数据结构课程设计报告附代码_第2页
数据结构课程设计报告附代码_第3页
数据结构课程设计报告附代码_第4页
数据结构课程设计报告附代码_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、. 第 PAGE 1 页应用技术学院课程设计报告课程名称数据构造课程设计设计题目 猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级*指导教师日期目的与要求稳固和加深对常见数据构造的理解和掌握掌握基于数据构造进展算法设计的根本方法掌握用高级语言实现算法的根本技能掌握书写程序设计说明文档的能力提高运用数据构造知识及高级语言解决非数值实际问题的能力课程设计容说明工程一对设计任务容的概述学生成绩管理*任务:要现对学生资料的录入、浏览、插入和删除等功能。输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:*和各门课程的成绩,设学生成绩至

2、少3门以上。存储构造:采用线性链式构造。详细设计LinkList *create():输入学生成绩记录函数;void print(LinkList *head):显示全部记录函数LinkList *Delete(LinkList *head):删除记录函数LinkList *Insert(LinkList *head):插入记录函数void menu_select():菜单项选择择void ScoreManage():函数界面程序流程图3删除学生记录4插入学生记录1输入学生记录输入n0n6主界面2输出学生记录退出学生成绩管理系统5退出判断nn=5n=1、2、3、4程序模块及其接口描述该程序可以

3、分为以下几个模块:1、菜单项选择择:void menu_select(); 提供五种可以选择的操作,在main函数过switch语句调用菜单menu_select()函数,进入不同的功能函数中完成相关操作。2、输入功能:LinkList *create(); 通过一个for循环语句的控制,可以一次完成无数条记录的输入。并将其存入链表。 3、输出功能:void print(LinkList *head);通过一个while的循环控制语句,在指针p!=NULL时,完成全部学生记录的显示。知道不满足循环语句,程序再次回到菜单项选择择功能界面。4、删除功能:LinkList *Delete(LinkL

4、ist *head); 按想要删除的学生的*首先进展查找,通过指针所指向结点的下移来完成,如果找到该记录,则完成前后结点的连接,同时对以查找到的结点进展空间的释放,最后完成对*个学生记录进展删除,并重新存储。5、插入功能:LinkList *Insert(LinkList *head);输入你想插入的位置,通过指针所指向结点的下移,找到该位置,将该新的学生记录插入到该结点,并对该结点后面的指针下移。链表长度加一,重新存储。程序的输入与输出描述输入:调用LinkList *create()函数,输入学生的、*、三门功课的成绩;输出:调用void print(LinkList *head)函数,输

5、出学生的记录。程序测试主菜单:成绩管理系统的主界面:学生成绩记录的输入:输出学生成绩记录:学生成绩记录的删除删除*是1101的学生记录插入新的学生成绩记录插入*为1103的学生记录尚未解决的问题或改良方向尚未解决的问题:该成绩管理系统还存在不少缺陷,而且它提供的功能也是有限的,只能实现学生成绩的输入、输出、删除、插入。对于,学生成绩记录的文件保存以及按*、等的查询也是缺少的。还有就是,对于多个学生成绩的操作也是不够的。改良的方向:在时间许可的条件下,尽量的完善该系统的各种功能,同时也应修改系统,让它更为人性化、简单化,被广阔用户所承受。对软件的使用说明该软件是属于比拟低级的软件,只是包含了课程

6、设计的要求的几个功能:输入、输出、删除、插入。所以用户在使用的过程中肯定会受到一定的局限性、不方便性,但由于时间的缘故,无法将软件做到尽善尽美。工程二对设计任务容的概述各种排序任务:用程序实现插入法排序、选择法排序、起泡法改良算法排序;利用插入排序、选择法排序和冒泡法的改良算法,将用户随机输入的一列数按递增的顺序排好。输入的数据形式为任何一个正整数,大小不限。输出的形式:数字大小逐个递增的数列。功能描述该函数有以下几个功能:对R0.n-1按递增有序进展直接插入排序对R0.n-1按递增有序进展冒泡排序对R0.n-1按递增有序进展直接选择排序排序后的输出5)调用所有排序,实现排序程序流程图直接插入

7、排序InsertSort()退出排序Sort直接选择排序SelectSort()冒泡排序BubbleSort()详细设计void InsertSort(RecType R,int n):对R0.n-1按递增有序进展直接插入排序void BubbleSort(RecType R,int n):对R0.n-1按递增有序进展冒泡排序void SelectSort(RecType R,int n):对R0.n-1按递增有序进展直接选择排序void disp(RecType R,int n):排序后的输出void Sort():调用所有排序,实现排序程序模块及其接口描述该程序分为五个模块:1.输入功能:

8、void Sort() 建立一个数组存放用户在键盘上输入的关键字,在分别调用各种排序的函数,对关键字进展排序。2.直接插入排序功能:void InsertSort(RecType R,int n)将后一个数与前一个数比拟,将其插入到第一个比它大的大的数前面,其余数字往后移一个位置。每次从无序表中取出第一个元素,把它插入到有序表的适宜位置,使有序表仍然有序。3.冒泡排序功能:void BubbleSort(RecType R,int n)在排序过程中,执行完最后的排序后,虽然数据已全部排序完备,但程序无法判断是否完成排序,为了解决这一缺乏,可设置一个标志位e*change,将其初始值设置为非0,

9、表示被排序的表是一个无序的表,每一次排序开场前设置e*change值为0,在进展数据交换时,修改e*change为非0。在新一轮排序开场时,检查此标志,假设此标志为0,表示上一次没有做过交换数据,则完毕排序;否则进展排序。4.直接选择排序功能:void SelectSort(RecType R,int n)在无序区里找最小的数,第i小的数字放在第i个位置上,与原来第i个位置上的数字交换。5.输出功能:void disp(RecType R,int n)程序的输入与输出描述输入:要10个为数字的关键字;输出:排序后新的序列。程序测试输入关键字,调用各种排序函数尚未解决的问题或改良方向改良方向:虽

10、然给出了它的各种排序的结果,但是没有它的箱子过程,这是我的改良的方向,希望能将每种排序的过程也能展示给用户,来表达它们的不同。对软件的使用说明用户只需根据提示,在键盘上输入要排序的10个关键字。工程三对设计任务容的概述有序表的合并要求输入有序表的数据,利用顺序表和链表构造分布完成两个有序表合并功能,并输出合并后的信息。功能描述该程序有如下几个功能:初始化顺序表初始化链表建立顺序表尾插法建表输出合并后的顺序表输出合并后的单链表合并顺序表合并单链表调用以上的函数,实现有序表的合并概要设计或程序流程图开场初始化链表初始化顺序表建立顺序表尾插法建表合并顺序表合并单链表输出完毕详细设计void Init

11、List(SqList *&L):初始化顺序表void InitList1(LinkList1 *&L):初始化链表void CreateList(SqList *&L,ElemType a,int n):建立顺序表void CreateListR(LinkList1 *&L,ElemType a,int n):尾插法建表void DispList(SqList *L):输出合并后的顺序表void DispList1(LinkList1 *L):输出合并后的单链表void UnionList(SqList *LA,SqList *LB,SqList *&LC):合并顺序表void UnionL

12、ist1(LinkList1 *LA,LinkList1 *LB,LinkList1 *&LC):合并单链表void Union():调用以上的函数,实现有序表的合并。程序模块及其接口描述程序有以下几个模块:初始化、建立顺序表初始化、建立链表输出合并后的表合并表调试分析或程序测试有序表的合并:尚未解决的问题或改良方向缺乏:不能重复使用程序。对软件的使用说明用户只需根据界面的提示,采用对应的操作。4工程四(1)对设计任务容的概述建立二叉树,层序、先序、中序、后序遍历 用递归或非递归的方法都可以*任务:要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立二叉树存储构造的的输入函数

13、、输出层序遍历序列的函数、输出先序遍历序列的函数、输出中序遍历序列的函数、输出后序遍历序列的函数;(2)功能描述建立二叉树输出二叉树先序遍历非递归算法:不为空时,根-左-右,采用递归的方法。中序遍历非递归算法:不为空时,左-根-右,采用递归的方法。后序遍历非递归算法:不为空时,左-右-根,采用递归的方法。层序遍历:运用队列,队列不空时,有左孩子将其入队,有右孩子将其入队,同时出队。调用以上函数实现二叉树的各种遍历(3)概要设计或程序流程图开场输入二叉树的按层结点值层次遍历后序遍历中序遍历先序遍历完毕(4)详细设计void CreateBTNode(BTNode * &b,char *str):

14、建立二叉树void DispBTNode(BTNode *b):输出二叉树void PreOrder(BTNode *b):先序遍历非递归算法void InOrder(BTNode *b):中序遍历非递归算法void PostOrder(BTNode *b):后序遍历非递归算法void LevelOrder(BTNode *b):层序遍历(5)程序模块及其接口描述(6)程序的输入与输出描述输入二叉树的按层结点值;输出二叉树先序遍历结点的顺序;输出二叉树中序遍历结点的顺序;输出二叉树后序遍历结点的顺序;输出二叉树层次遍历结点的顺序;(7)调试分析或程序测试用户从键盘上输入要创立的二叉树结点:(8

15、)尚未解决的问题或改良方向改良方向:希望能将系统改良的更为人性化,让界面更舒适,操作更简单。(9)对软件的使用说明用户只需按照界面的提示,采取相应的措施,到时界面会提醒用户键盘输入。5工程五1对设计任务容的概述猴子选大王*任务:一堆猴子都有,是1,2,3 .m ,这群猴子m个按照1-m的顺序围坐一圈,从第1开场数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。要求:输入数据:输入m,n m,n 为整数,nm输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能2需求分析或功能描述为猴子out,out=p

16、asspass为密码值,该猴子离圈,次数step+。剩下的猴子继续次操作,直到次数step=猴子monkey时完毕。3概要设计或程序流程图开场输入猴子的数量和密码值=密码值,猴子出列,次数自增N次数=猴子数Y完毕4详细设计或源代码说明为猴子out,out=passpass为密码值,该猴子离圈,次数step+。剩下的猴子继续次操作,直到次数step=猴子monkey时完毕。函数int Monkey()实现了这一功能。5程序模块及其接口描述运用队列环形队列,=密码值 入队;为猴子out,out=passpass为密码值,该猴子离圈,次数step+。剩下的猴子继续次操作,直到次数step=猴子mon

17、key时完毕。函数int Monkey()实现了这一功能。6程序的输入与输出描述输入数据:输入m,n m,n 为整数,n密码值8尚未解决的问题或改良方向缺乏:不能重复使用程序,如果数字大的话,输出繁琐。9对软件的使用说明用户只需根据软件界面的提示进展相关操作。结论及体会本学期,我学会了常用数据构造:数组连续空间,栈先进后出,队列先进先出,链表指针,树前驱、后继,根、叶子,图点、边,堆特殊的树,根节点的值最大或最小还有线性表存储构造:顺序存储构造和链式存储,常用的排序算法。在这一周里,自己用了CFree做了一个程序,分别实现了学生成绩管理系统、各种排序、有序表的合并、二叉树的建立及遍历以及猴子选

18、大王,通过本次数据构造课程设计,我学习了很多课上没弄懂的动西,稳固了关于二叉树、栈、链表等知识。在设计程序时,虽然很用心的做,但还是遇到种种难题,通过上网查找资料、图书馆查阅资料、问教师的方式,最终还是解决多数,虽然最后的程序不是很完美,但是因为是通过自己的努力完成的,还是感觉很满意,也收获很大东西。经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。在这一段努力学习的过程中,我的编程设计有了明显的提高,其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,

19、是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的构造,相似的格式。只要努力去学习,就会灵活的去应用它。总之,通过这次的课程设计,我们收获匪浅,首先由衷感教师提供这样的一个时机锻炼自己,感受到学来的知识不只是用来完成试卷的。一向习惯独立思考的自己学会了积极的与别人交流,取长补短,共同进步。课程设计使自己发现考试不是最重要的,最重要的是能运用所学的知识。在整个课程设计的学习过程中,不再是学到知识解题,而是在实际运用时遇到什么学什么,重在把知识应用于实际。附录1:参考文献1 数据构造教程第3版,春葆,清华大学,20102数据构造,剑,清华大学,2011

20、3数据构造(C语言版),严蔚敏 吴伟民,清华大学,19974Data Structures Using C数据构造C语言版,R Krishnamoorthy、G Indirani Kumaravel,清华大学,2009-95C+数据构造与程序设计 美Robert L.Kruse/Ale*ander J.Ryba著/钱丽萍译, 清华大学,2004 6计算机算法设计与分析第2版,王晓东, 电子工业, 2004附录2:局部源代码清单#include #include #include#include #include #define LEN sizeof(LinkList)#define Ma*Si

21、ze 50/*/成绩管理系统typedef struct LNode/*定义单链表结点类型*/char name10; / char num10;/* int score3; struct LNode *ne*t; LinkList;LinkList *init()return NULL; /*返回空指针*/LinkList *create()int i,s,k;int j=0;LinkList *head=NULL,*p; /* 定义函数.此函数带回一个指向链表头的指针*/system(cls); printf(n请输入您想输入的学生个数:);scanf(%d,&k);for(j=0;jnu

22、m);printf(输入:);scanf(%s,p-name);printf(请分别输入语文、数学、英语的分数 %d scoresn,3);/*开场输入*/for(i=0;iscorei);if(p-scoreiscorei100) /*确保成绩在0100之间*/printf(Data error,please enter again.n);while(p-scoreiscorei100);p-ne*t=head; /*将头结点做为新输入结点的后继结点*/head=p; /*新输入结点为新的头结点*/return(head); /* 显示全部记录函数*/void print(LinkList

23、*head)LinkList *p; system(cls); p=head; /*初值为头指针*/printf(n*LinkList*n);printf(n);printf(| * | | 语文 | 数学 | 英语 | n);printf(n);while(p!=NULL) printf(| %4s | %-4s | %3d | %3d | %3d |n, p-num,p-name,p-score0,p-score1,p-score2); p=p-ne*t;printf(n);printf(*END*n);/*删除记录函数*/LinkList *Delete(LinkList *head)L

24、inkList *p1,*p2; /*p1为查找到要删除的结点指针,p2为其前驱指针*/char c,s6; /*s6用来存放*,c用来输入字母*/system(cls); printf(请输入要删除的学生的*: );scanf(%s,s);p1=p2=head; /*给p1和p2赋初值头指针*/while(strcmp(p1-num,s) & p1 != NULL) /*当记录的*不是要找的,或指针不为空时*/p2=p1; /*将p1指针值赋给p2作为p1的前驱指针*/p1=p1-ne*t; /*将p1指针指向下一条记录*/if(strcmp(p1-num,s)=0) /*找到了*/prin

25、tf(*FOUND*n);printf(n);printf(| * | | 语文 | 数学 | 英语 |n);printf(n);printf(| %4s | %4s | %3d | %3d | %3d |n,p1-num,p1-name,p1-score0,p1-score1,p1-score2);printf(n);printf(*END*n);printf(您确定要删除该学生的记录吗 Y/N ); /*提示是否要删除,输入Y删除,N则退出*/for(;)scanf(%c,&c);if(c=n|c=N) break; /*如果不删除,则跳出本循环*/if(c=y|c=Y)if(p1=hea

26、d) /*假设p1=head,说明被删结点是首结点*/head=p1-ne*t; /*把第二个结点地址赋予head*/elsep2-ne*t=p1-ne*t; free(p1);/*否则将一下结点地址赋给前一结点地址*/printf(n*为 %s 的学生记录已被删除.n,s);break; /*删除后就跳出循环*/ else printf(n找不到*为 %s 的学生记录.n,s); /*找不到该结点*/return(head);/插入 LinkList *Insert(LinkList *head)int k;/在表中第k个位置插入printf(请输入插入的位置:);scanf(%d,&k);

27、 int j=0,i=0;LinkList *p1,*p2; /*p1为查找到要删除的结点指针,p2为其前驱指针*/char N10,s10; /*s10用来存放,N10用来存放*/int score3; system(cls); printf(输入*:); scanf(%s,N);printf(输入:);scanf(%s,s);printf(请分别输入语文、数学、英语的分数 %d scoresn,3);/*开场输入*/for(i=0;i3;i+) /*3门课程循环3次*/doprintf(score%d:,i+1);scanf(%d,&scorei);if(scorei100) /*确保成绩

28、在0100之间*/printf(Data error,please enter again.n);while(scorei100);p1=head; /*给p1赋初值头指针*/while(jne*t; /*将p1指针指向下一条记录*/if(p1=NULL) return 0; elsep2=(LinkList *)malloc(sizeof(LinkList);strcpy(p2-num,N);strcpy(p2-name,s);for(i=0;iscorei=scorei;p2-ne*t=p1-ne*t;p1-ne*t=p2;void menu_select()printf(nnn);pri

29、ntf(*n);printf(t Wele to n);printf(t The student score manage system n);printf(*MENU*n);printf(tt1. 输入学生记录n); /*输入学生成绩记录*/printf(tt2. 输出学生记录n); /*显示*/printf(tt3. 删除学生记录n); /*删除*/printf(tt4. 插入一个新的学生记录n); /*插入*/printf(tt5. 退出n); /*退出*/printf(*n);/*主函数界面*/void ScoreManage()LinkList *head,New;int i,n;h

30、ead=init(); /*链表初始化,使head的值为NULL*/menu_select(); do printf(ntt输入您的选择(15):); scanf(%d,&n);while(n5);for(;) /*循环无限次*/switch(n) case 1:head=create();break; case 2:print(head);break; case 3:head=Delete(head);break; case 4:head=Insert(head);break; case 5:return; /*如菜单返回值为9则程序完毕*/menu_select();printf(nttt

31、输入您的选择(15):); scanf(%d,&n);/*/各种排序typedef int KeyType; /*定义关键字类型*/typedef char InfoType10;typedef struct /*记录类型*/KeyType key; /*关键字项*/InfoType data; /*其他数据项,类型为InfoType*/ RecType;/*排序的记录类型定义*/void InsertSort(RecType R,int n) /*对R0.n-1按递增有序进展直接插入排序*/int i,j;RecType tmp;for (i=1;i=0 & tmp.keyRj.key) R

32、j+1=Rj; /*将关键字大于Ri.key的记录后移*/j-;Rj+1=tmp; /*在j+1处插入Ri*/void BubbleSort(RecType R,int n)int i,j,e*change;RecType tmp;for(i=0;ii;j-)if(Rj.keyRj-1.key)tmp=Rj;Rj=Rj-1;Rj-1=tmp;e*change=1;if(e*change=0) return ;void SelectSort(RecType R,int n)int i,j,k;RecType tmp;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(R

33、j.keyRk.key)k=j;if(k!=i)tmp=Ri;Ri=Rk;Rk=tmp;void disp(RecType R,int n)int i;for (i=0;in;i+)printf(%d ,Ri.key);void Sort()int i,n=10,k;RecType RMa*Size;KeyType a10;printf(请输入排序的关键字(10个数字)n);for (i=0;in;i+)scanf(%d,&ai);for (i=0;idata=ch;p-lchild=p-rchild=NULL;if (b=NULL) /*p为二叉树的根结点*/ b=p;else /*已建立二

34、叉树根结点*/switch(k) case 1:Sttop-lchild=p;break;case 2:Sttop-rchild=p;break;j+;ch=strj;void DispBTNode(BTNode *b) if (b!=NULL)printf(%c,b-data);if (b-lchild!=NULL | b-rchild!=NULL)printf();/*有孩子结点时才输出(*/DispBTNode(b-lchild);/*递归处理左子树*/if (b-rchild!=NULL) printf(,);/*有右孩子结点时才输出,*/DispBTNode(b-rchild);/*

35、递归处理右子树*/printf();/*有孩子结点时才输出)*/先序遍历非递归算法 void PreOrder(BTNode *b)BTNode *StMa*Size,*p;int top=-1;if(b!=NULL)top+;Sttop=b;while(top-1)p=Sttop;top-;printf(%c,p-data);if(p-rchild!=NULL)top+;Sttop=p-rchild;if(p-lchild!=NULL)top+;Sttop=p-lchild;printf(%c,b);printf(n);/中序遍历非递归算法void InOrder(BTNode *b)BTN

36、ode *StMa*Size,*p;int top=-1;if(b!=NULL)p=b;while(top-1|p!=NULL)while(p!=NULL)top+;Sttop=p;p=p-lchild;if(top-1)p=Sttop;top-;printf(%c,p-data);p=p-rchild;printf(n);/后序遍历非递归算法void PostOrder(BTNode *b)BTNode *StMa*Size,*p;int flag,top=-1;if(b!=NULL)dowhile(b!=NULL)top+;Sttop=b;b=b-lchild;p=NULL;flag=1;

37、while(top!=-1&flag)b=Sttop;if(b-rchild=p)printf(%c,b-data);top-;p=b;elseb=b-rchild;flag=0;while(top!=-1);printf(n);/层序遍历 void LevelOrder(BTNode *b)BTNode *p;BTNode *quMa*Size;int front,rear;front=rear=-1;rear+;qurear=b;while(front!=rear)front=(front+1)%Ma*Size;p=qufront;printf(%c,p-data);if(p-lchild

38、!=NULL)rear=(rear+1)%Ma*Size;qurear=p-lchild;if(p-rchild!=NULL)rear=(rear+1)%Ma*Size;qurear=p-rchild;void BTtree()BTNode *b;char str100;printf(输入你要建立二叉树的结点:);scanf(%s,str);CreateBTNode(b,str);printf(nn建立二叉树为:);DispBTNode(b);printf(nn二叉树b的先序遍历序列);PreOrder(b);printf(nn二叉树b的中序遍历序列);InOrder(b);printf(nn

39、二叉树b的后序遍历序列);PostOrder(b);printf(nn二叉树b的层次遍历序列);LevelOrder(b);printf(nn);/*/有序表的合并typedef char ElemType; typedef struct ElemType dataMa*Size;/*存放顺序表元素*/ int length;/*存放顺序表的长度*/ SqList;/*顺序表的类型定义*/typedef struct LNode1 /*定义单链表结点类型*/ElemType data;struct LNode1 *ne*t;/*指向后继结点*/ LinkList1;void InitList(

40、SqList *&L)L=(SqList *)malloc(sizeof(SqList);/*分配存放线性表的空间*/L-length=0;void InitList1(LinkList1 *&L)L=(LinkList1 *)malloc(sizeof(LinkList1); /*创立头结点*/L-ne*t=NULL;void CreateList(SqList *&L,ElemType a,int n)/*建立顺序表*/int i;for (i=0;idatai=ai;L-length=n;void CreateListR(LinkList1 *&L,ElemType a,int n)/*

41、尾插法建立单链表*/LinkList1 *s,*r;int i;L=(LinkList1 *)malloc(sizeof(LinkList1); /*创立头结点*/L-ne*t=NULL;r=L;/*r始终指向终端结点,开场时指向头结点*/for (i=0;idata=ai;r-ne*t=s;/*将*s插入*r之后*/r=s;r-ne*t=NULL;/*终端结点ne*t域置为NULL*/void DispList(SqList *L)int i;if (L-length=0) return;for (i=0;ilength;i+)printf(%c ,L-datai);printf(n);vo

42、id DispList1(LinkList1 *L)LinkList1 *p=L-ne*t;while (p!=NULL)printf(%c ,p-data);p=p-ne*t;printf(n);/顺序表存放有序表 void UnionList(SqList *LA,SqList *LB,SqList *&LC)int i=0,j=0,k=0;/*i、j、k分别作为LA、LB、LC的下标*/LC=(SqList *)malloc(sizeof(SqList);LC-length=0;while (ilength & jlength)if (LA-dataidataj)LC-datak=LA-

43、datai;i+;k+;else/*LA-dataiLB-dataj*/LC-datak=LB-dataj;j+;k+;while (ilength)/*LA尚未扫描完,将其余元素插入LC中*/LC-datak=LA-datai;i+;k+;while (jlength) /*LB尚未扫描完,将其余元素插入LC中*/LC-datak=LB-dataj;j+;k+; LC-length=k;/单链表存放有序表void UnionList1(LinkList1 *LA,LinkList1 *LB,LinkList1 *&LC)LinkList1 *pa=LA-ne*t,*pb=LB-ne*t,*p

44、c,*s;LC=(LinkList1 *)malloc(sizeof(LinkList1);/*创立LC的头结点*/pc=LC;/*pc始终指向LC的最后一个结点*/while (pa!=NULL & pb!=NULL)if (pa-datadata)s=(LinkList1 *)malloc(sizeof(LinkList1);/*复制*pa结点*/s-data=pa-data;pc-ne*t=s;pc=s;/*采用尾插法将*s插入到LC的最后*/pa=pa-ne*t; elses=(LinkList1 *)malloc(sizeof(LinkList1);/*复制*pb结点*/s-data

45、=pa-data;pc-ne*t=s;pc=s;/*采用尾插法将*s插入到LC的最后*/pa=pa-ne*t;while (pa!=NULL)s=(LinkList1 *)malloc(sizeof(LinkList1);/*复制*pa结点*/s-data=pa-data;pc-ne*t=s;pc=s;/*采用尾插法将*s插入到LC的最后*/pa=pa-ne*t;while (pb!=NULL)s=(LinkList1 *)malloc(sizeof(LinkList1);/*复制*pa结点*/s-data=pb-data;pc-ne*t=s;pc=s;/*采用尾插法将*s插入到LC的最后*/pb=pb-ne*t;pc-ne*t=NULL;void Union()SqList *L1,*L2,*L3;LinkList1 *L4,*L5,*L6;ElemType a5;ElemType b5;printf(a=:);scanf(%s,a);printf(b=:);scanf(%s,b);printf(顺序表存放有

温馨提示

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

评论

0/150

提交评论