1、 1 数据结构课程设计报告数据结构课程设计报告 1) 需求分析需求分析 此程序主要用来实现单链表的创建、插入、删除、排序、并、交、差 运算及输出等基本操作。 程序需要根据使用者的需要来运算得出符合要求的结果 在程序运行的过程中根据提示进行输入,使用了 scanf 函 数; 使用了 printf 函数进行输出; 程序输出符合使用者的需要的结果; 程序能够输出任意运算的正确结果。 2) 概要设计概要设计 1. 定义所需的数据结构 data *next typedef struct LNode int data; /数据域 struct LNode *next; /指针域 LNode, *LinkL
2、ist; 2. 模块划分 void LinkListCreat(LinkList /创建 void ListInsert(LinkList head,int i,int e); /插入 void ListDelete(LinkList head,int i,int e); /删除 void printList(LinkList /输出 void LinkListsort(LinkList /排序 void LinkListMerge(LinkList / 并 void LinkListJiao(LinkList /交 2 void LinkListcha(LinkList / 差 void L
3、inkListhebing(LinkList /差集的并 void main(); /主函数,分别调用以上的子函数 3 .功能设计 首先利用元素逆序插入法建立链表, 然后导出菜单, 用 switch 调用各个子函数,实现链表的创建,插入,删除,排序,交,并, 差等运算,其中排序用的是冒泡法。 3) 详细设计详细设计 /单链表的创建单链表的创建 void CreatList(Lnode *L) /*建立链表 CreastList 函数*/ Lnode *p; int value; L-next=NULL; while (1) /*当输入非 0 数值时*/ scanf( “%d“, if (val
4、ue=NULL) return; p=(Lnode *)malloc(sizeof(Lnode); /*建立 P 链表*/ p-data=value; p-next=L-next; /*把后输入的插到前面*/ L-next=p; /单链表的输出单链表的输出 void printList(Lnode *head) printf(“输出的结果如下: n“); Lnode *p = head-next;/头结点赋给 P if (p = NULL) printf(“List is empty!n“); return; 3 while (p != NULL) printf(“%d “, p-data);
5、 p = p-next; printf(“n“); /单链表的插入单链表的插入 void ListInsert(LinkList head,int i,int e)/在单链表中第 i 个位置之前插入 e 元 素 LinkList p,s; int j=0; p=head; while(p +j; if(!p|ji-1) printf(“要插入的位置错误!“); s = (LNode *)malloc(sizeof(LNode);/给插入的元素开辟空间 s-data = e;/改变指针指向 s-next = p-next; p-next = s; /单链表的删除单链表的删除 int ListDe
6、lete_L(Lnode *L,int i) /*删除函数*/ 4 Lnode *p=L-next; int j=0; Lnode *q; while (p-next +j; /*找出第 i 节点,并令 p 指向其前 趋*/ if (!p-next | ji-1) return 0; q=p-next; p-next=q-next; free(q); return 1; /单链表的差运算单链表的差运算 Lnode *c,*a,*t; c=C=(Lnode *)malloc(sizeof(Lnode); a = A-next; while(a) p = B-next; while(p if(!(p t-data = a-data; c-next = t; c = t; a=a-next; c-next = NUL