- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构单链表课程设计设计报告
《数据结构》课程设计报告
需求分析
此程序主要用来实现单链表的创建、插入、删除、排序、并、交、差运算及输出等基本操作。
程序需要根据使用者的需要来运算得出符合要求的结果
①在程序运行的过程中根据提示进行输入,使用了scanf函数;
②使用了printf函数进行输出;
③程序输出符合使用者的需要的结果;
④程序能够输出任意运算的正确结果。
2) 概要设计
1. 定义所需的数据结构
data *next
typedef struct LNode{
int data; //数据域
struct LNode *next; //指针域
}LNode, *LinkList;
2. 模块划分
void LinkListCreat(LinkList L,int n); //创建
void ListInsert(LinkList head,int i,int e); //插入
void ListDelete(LinkList head,int i,int e); //删除
void printList(LinkList head); //输出
void LinkListsort(LinkList L); //排序
void LinkListMerge(LinkList La, LinkList Lb,LinkList Lc); //并
void LinkListJiao(LinkList La, LinkList Lb,LinkList Lc); //交
void LinkListcha(LinkList La, LinkList Lb,LinkList Lc); //差
void LinkListhebing(LinkList La, LinkList Lb,LinkList Lc); //差集的并
void main(); //主函数,分别调用以上的子函数
3 .功能设计
首先利用元素逆序插入法建立链表,然后导出菜单,用switch调用各个子函数,实现链表的创建,插入,删除,排序,交,并,差等运算,其中排序用的是冒泡法。
3) 详细设计
//单链表的创建
void CreatList(Lnode *L) /*建立链表CreastList函数*/
{ Lnode *p;
int value;
L-next=NULL;
while (1) /*当输入非0数值时*/
{scanf( %d,value);
if (value==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;
}
while (p != NULL)
{
printf(%d , p-data);
p = p-next;
}
printf(\n);
}
//单链表的插入
void ListInsert(LinkList head,int i,int e)//在单链表中第i个位置之前插入e元素
{
LinkList p,s;
int j=0;
p=head;
while(pji-1)//找到要插入的位置
{
p = p-next;
++j;
}
if(!p||ji-1)
{
printf(要插入的位置错误!);
}
s = (LNode *)malloc(sizeof(LNode));//给插入的元素开辟空间
s-data = e;//改变指针指向
s-next = p-next;
p-next = s;
}
//单链表的删除
int ListDelete_L(Lnode *L,int i) /*删除函数*/
{
Lnode *p=L-next;
int j=0;
Lnode *q;
while (p-next ji-1) {p=p-next; ++j;} /*找出第i节点,并令p指向其前趋*/
if (!p-next || ji
您可能关注的文档
最近下载
- 22S702:室外排水设施设计与施工——钢筋混凝土化粪池.pdf VIP
- 人教版小学数学六年级上册重点题型专项练习(必刷)word版.docx
- 广东省中山市2022-2023学年九年级上学期第一阶段十校联考英语试卷(含答案).docx VIP
- 423编号七年级数学《代数式》习题(含答案).pdf VIP
- 译林版三年级上册英语Unit 4《This is my friend》全单元教学课件(新教材).pptx
- 中学班会 课堂教学《寝室管理的要求》课件(共18张PPT).pptx VIP
- 物理学与人工智能.ppt
- 手机塑胶件来料检验标准手册.pdf VIP
- 公安基础知识1000题.docx
- 翻修屋顶合同5篇.docx VIP
文档评论(0)