南航金城数据结构课设1Word格式.docx
- 文档编号:19148537
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:19.42KB
南航金城数据结构课设1Word格式.docx
《南航金城数据结构课设1Word格式.docx》由会员分享,可在线阅读,更多相关《南航金城数据结构课设1Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
#defineERROR0
#defineOVEFLOW-2
Typedefintstatus;
Typedefintelemtype;
Typedefstruct{
Int*elem;
Intlenther;
Intlistsize;
}sqlist;
实验2:
单链表实验(8学时)
一实验目的
1.学会定义线性表的链表存储类型,实现C程序的基本结构对线性表的一些基本操作和具体的函数定义。
2.掌握单链表的基本操作,实现顺序表的插入,删除,查找基本运算。
二实验要求
.1。
预习C语言中结构体,指针的定义和基本的操作方法。
.2。
对链表每个基本操作用一个单独函数实现。
.3。
编写完整程序完成下面实验内容并且上机运行。
三实验内容
初始化单链表La
销毁单链表La
3.将单链表La设置为空表
4.测试单链表La是否上空表
5.在单链表La插入一个新元素
6.删除单链表La中某个元素
7.在单链表La中查找某个元素,查找成功,返回位序,否则返回0
8.输入n个元素,建立单链表La
9.打印单链表La所有元素
10.归并非递减表La和Lb成为非递减表Lc
问题补充:
#defineOVERFLOW-2
Typedefstuctlnode{
Intdata;
Stuctlnode*next;
}lnode,*linklist;
WREN编:
1.
iostream>
usingnamespacestd;
#defineSFscanf
#definePFprintf
#defineINFEASIBLE-1
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT
typedefstructSqlist
{
int*elem;
intlength;
intlistsize;
}Sqlist;
intinitlist(Sqlist&
L);
//初始化表
intinput(structSqlist&
L,inte);
//输入值e
intListDelete(Sqlist&
L,inti);
//删除第i个数
intLocateElem(Sqlist&
//在顺序表La中查找某个元素,返回序位
intcreatelist(Sqlist&
L,intn);
//创建一个顺序表有n个元素
intdisplaylist(Sqlist&
//打印顺序表La所有元素
voidMergelist(Sqlist&
L1,Sqlist&
L2,Sqlist&
L3);
//归并非递减表La和Lb成为非递减表Lc
intmain()
intx;
charj;
SqlistLa,Lb,Lc;
PF("
\n\n\n\n\n\n\t\t\t\t欢迎使用"
);
\n\n\n\t\t\t\t制作人:
wren"
\n\n\n\t\t\t\t*************"
\n\n\n\n\n\n\n\n\n\n\n\n按回车键进入主菜单:
"
getchar();
loop:
system("
cls"
\n"
\t\t\t\t************\n"
\t\t\t\t***主菜单***\n"
\t\t\t\t************\n\n\n\n\n\n"
\t\t1、初始化顺序表La\t2、将顺序表La设置为空表\n\n"
\t\t3、测试顺序表La是否上空表4、在顺序表La插入一个新元素\n\n"
\t\t5、删除顺序表La中一个元素6、在顺序表La中查找一个元素\n\n"
\t\t7、输入n个元素建立顺序表La8、打印顺序表La所有元素\n\n"
\t\t9、归并非递减表La和Lb成为非递减表Lc\n\n"
\n\n\n\n\n请选择[1/2/3/4/5/6/7/8/9]:
j=getchar();
if(j=='
\n'
)gotoloop;
//返回主菜单
switch(j)
{
case'
1'
:
if(initlist(La))PF("
初始化成功!
PF("
按回车键返回!
getchar();
gotoloop;
2'
成功!
3'
if(La.length==0)PF("
La为空表\n"
elsePF("
La不为空表\n"
4'
输入要插入的数\n"
SF("
%d"
&
x);
if(input(La,x))PF("
5'
输入要删除的数的序号\n"
if(ListDelete(La,x))PF("
;
6'
输入要查找的数\n"
if(LocateElem(La,x))PF("
7'
请输入要创建的表的长度\n"
if(createlist(La,x))PF("
8'
La表为:
if(displaylist(La,La.length))PF("
\n结束!
9'
请输入要创建的La表的长度\n"
La:
displaylist(La,La.length);
\n请输入要创建的Lb表的长度\n"
if(createlist(Lb,x))PF("
Lb:
displaylist(Lb,Lb.length);
Mergelist(La,Lb,Lc);
\nLc:
displaylist(Lc,Lc.length);
}
return0;
}
L)
L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!
L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
returnOK;
L,inte)
if(L.length>
=L.listsize)
L.elem=(int*)realloc(L.elem,(L.listsize+1)*sizeof(int));
L.elem[L.length]=e;
L.length++;
L,inti)
int*p;
if((i<
1)||(i>
L.length))returnERROR;
p=&
L.elem[i-1];
for(p++;
p<
=L.elem+L.length-1;
p++)*(p-1)=*p;
L.length--;
inti=0;
while(i++<
=L.length&
&
L.elem[i]==e)returni+1;
returnERROR;
L,intn)
inti;
initlist(L);
请依次输入元素(以回车隔开):
for(i=0;
i<
n;
i++)
cin>
>
L.elem[i];
L.length=n;
cout<
<
L.elem[i]<
"
L3)
int*p1,*p2,*p3;
int*p1_last,*p2_last;
p1=L1.elem;
p2=L2.elem;
p1_last=L1.elem+L1.length-1;
p2_last=L2.elem+L2.length-1;
L3.listsize=L3.length=L1.length+L2.length;
p3=L3.elem=(int*)malloc(L3.listsize*sizeof(int));
L3.elem)exit(ERROR);
while(p1<
=p1_last&
p2<
=p2_last)
if(*p1<
=*p2)*p3++=*p1++;
if(*p1>
*p2)*p3++=*p2++;
while(p1<
=p1_last)*p3++=*p1++;
while(p2<
=p2_last)*p3++=*p2++;
2.
//#defineOVERFLOW-2
//typedefintStatus;
typedefstructLNode
intdata;
structLNode*next;
}LNode,*linklist;
intinitlist(linklist&
//初始化单链表
intDestoryLNode(linklist&
//销毁单链表La
intClearLNode(linklist&
//将单链表La设置为空表
intLNodeEmpty(linklist&
//测试单链表La是否上空表
intInsertLNode(linklist&
//在单链表La插入一个新元素
intDeteteLNode(linklist&
L,inti,int&
e);
//删除单链表La中某个元素
intLocateElem_L(linklist&
//在单链表La中查找某个元素,查找成功,返回位序,否则返回0
intCreateLNode(linklist&
//输入n个元素,建立单链表La
intDisplayLNode(linklist&
//打印单链表La所有元素
intMergeLNode_L(linklist&
La,linklist&
Lb,linklist&
Lc);
intx,y;
charj;
linklistLa,Lb,Lc;
PF("
\n\n\n\t\t\t\t************"
getchar();
loop:
system("
\t\t\t\t************\n\n\n\n"
\t1、初始化单链表La\t\t\t2、销毁单链表La\n\n"
\t3、将单链表La设置为空表\t\t4、测试单链表La是否上空表\n\n"
\t5、在单链表La插入一个新元素\t\t6、删除单链表La中某个元素\n\n"
\t7、在单链表La中查找某个元素,查找成功,返回位序,否则返回0\n\n"
\t8、输入n个元素,建立单链表La\t\t9、打印单链表La所有元素\n\n"
\t0、归并非递减表La和Lb成为非递减表Lc\n\n"
\n\n\n\n\n请选择[1/2/3/4/5/6/7/8/9/0]:
j=getchar();
if(j=='
switch(j)
{
case'
if(initlist(La))PF("
PF("
getchar();
gotoloop;
if(LNodeEmpty(La))PF("
La为空单链表\n"
elsePF("
La不为空单链表\n"
SF("
if(InsertLNode(La,x))PF("
if(DeteteLNode(La,x,y))PF("
成功删除%d!
y);
if(y=LocateElem_L(La,x))PF("
成功找到他的序号为%d!
请输入要创建的单链表的长度\n"
if(CreateLNode(La,x))PF("
La单链表为:
if(DisplayLNode(La))PF("
0'
请输入要创建的La单链表的长度\n"
DisplayLNode(La);
\n请输入要创建的Lb单链表的长度\n"
if(CreateLNode(Lb,x))PF("
DisplayLNode(Lb);
MergeLNode_L(La,Lb,Lc);
DisplayLNode(Lc);
}
return0;
L=(linklist)malloc(sizeof(LNode));
L->
next=NULL;
LNode*p;
p=L->
next;
while(L->
next)
L->
next=p->
free(p);
p=L->
free(L);
L=NULL;
re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 金城 数据结构
![提示](https://static.bdocx.com/images/bang_tan.gif)