文档介绍:上海应用技术学院课程设计报告课程名称设计题目 数据结构课程设计(多道) 院系计算机科学与信息学院 专业网络工程 班级 姓名 学号 指导教师 甘苹日期2014-7-7~2014-7-:有序表合并对设计任务内容的概述要求输入有序表的数据,利用顺序表和链表结构分别完成两个有序表合并功能,并输出合并后的信息。需求分析或功能描述分别设计顺序表和链表的合并功能,主界面供选择有序表的类型,选择后对两个有序表进行合并。函数是静态数据读取,顺序表读取有序的数组数据直接合并输出,单链表是对无序的集合排序后合并输出概要设计或程序流程图选择有序表类型创建顺序表 创建链表 0、退出\ 顺序表合并 链表合并输出顺序表 ,顺序表书有序表直接合并输出,单链表是对集合排序后合并输出。数据结构#definedatatypeint/*定义数据结构*/〃顺序存储类型typedefstruct{datatypedata[MAXSIZE];int length;}SqList;/*定义数据结构*/〃单链表存储结构typedefstructLnode{datatypedata;structLnode*next;}LinkList;程序模块及其接口描述程序包括以下几个模块:建立排序输出合并Main函数顺序表CreateListDispList1squnion单链表CreateListRSortDispList2linkunion详细设计或源代码说明//listl:有序表合并预处理与头文件#include<>#>#include<>#include<>//建立顺序表voidCreateList(SqList*&L,datatypea[],intn){inti;L=(SqList*)malloc(sizeof(SqList));for(i=0;i<n;i++)L->data[i]=a[i];L->length=n;}//建立单链表voidCreateListR(LinkList*&L,datatypea[],intn){LinkList*s,*r;inti;L=(LinkList*)malloc(sizeof(LinkList));L->next=NULL;r=L;for(i=0;i<n;i++){s=(LinkList*)malloc(sizeof(LinkList));s->data=a[i];r->next=s;r=s;}r->next=NULL;}〃单链表递增排序voidSort(LinkList*&L) //单链表元素递增排序{LinkList*p,*pre,*q;//p指向L的第2个数据节点//构造只含一个数据结点的有序表p=L->next->next;L->next->next=NULL;while(p!=NULL)q=p->next; 〃q保存*p结点后继结点的指针pre=L; //从有序表开头进行比较,pre指向插入*p的前驱结点while(pre->next!=NULL&&pre->next->data<p->data)//在有序表中找插入*p的前驱结点*prepre=pre->next;p->next=pre->next; //将*pre插入至卩*p之后pre->next=p;p=q; 〃扫描原链表余下的节点}}//输出顺序表voidDispList1(SqList*L)//输出线性表{inti;//if(Listdatatype(L))return;for(i=0;i<L->length;i++)printf("%d",L->data[i]);printf("\n");}//输出单链表voidDispList2(LinkList*L) 〃输出线性表{LinkList*p=L->next;while(p!=NULL){printf("%d",p->data);p=p->next;}printf("\n");}顺序表合并函数//采用顺序表存放有序表voidsqunion(SqList*LA,SqList*LB,SqList*&LC){ //printf("aaa\n");printf("顺序表的合并\n");inti=O,j=O,k=O;LC=(SqList*)malloc(sizeof(SqList));while(i<LA->length&&j<LB->length){if(