数据结构实验二WordWord下载.docx
- 文档编号:12975392
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:18
- 大小:59.97KB
数据结构实验二WordWord下载.docx
《数据结构实验二WordWord下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验二WordWord下载.docx(18页珍藏版)》请在冰豆网上搜索。
6.删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。
7.把单链表变成带表头结点的循环链表,输出循环单链表所有结点值,观察输出结果。
8.(★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元素,而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出单链表A和单链表B的所有结点值,观察输出结果。
二、程序设计的基本思想,原理和算法描述:
(包括程序的结构,数据结构,输入/输出设计,符号名说明等)
这是一个带头结点的线性链表,数据域存放整形数据,由用户输入。
头结点数据域存链表长度,所以程序中有个求链表长度的函数
intLengthList(LinkListL);
//求链表长度
L是指向头结点的指针,将长度值存入语句为
L->
data=LengthList(L);
为了实时观察链表情况,程序中有个输出链表数据的函数
voidPrintList(LinkListL);
//输出链表
程序可以实现8种不同的操作,这8种不同的操作由8个函数实现,分别是
voidCreateList(LinkList&
L);
//创建链表
voidLocate(LinkListL);
//查询数值
voidInsertList(LinkList&
//插入数值
voidDeleteList(LinkList&
//选择删除
voidDeleterepeat(LinkList&
//删除重复结点
voidDeleteEven(LinkList&
//删除数值为偶数的结点
voidRotate(LinkList&
//变为循环链表
voidDivide(LinkList&
//分解成两个链表
这些基本操作的实现算法都比较简单,有些跟书本上一样,有些需要自己稍作思考才能写出,具体程序见第三部分
8种不同的操作可以由用户通过按A-H这八个字母键来选择,分别是A:
创建B:
查询C:
插入D:
选择删除E:
删除重复F:
删除偶数G:
变为循环链表H:
分解为两个链表,见第四部分输出截图,可以清晰的看到整个过程
主程序中用开关语句实现:
charoperate;
printf("
\n\n输入字符选择链表操作类型\nA:
删除偶数\nG:
分解为两个链表\n"
);
scanf("
%c"
&
operate);
switch(operate)
{
case'
a'
:
A'
CreateList(L);
break;
case'
b'
B'
Locate(L);
c'
C'
InsertList(L);
break;
d'
D'
DeleteList(L);
e'
E'
Deleterepeat(L);
f'
F'
DeleteEven(L);
g'
G'
Rotate(L);
h'
H'
Divide(L);
\n'
gotolabel;
default:
printf("
输入有误,请重新输入!
"
}
三、源程序及注释:
#include<
stdio.h>
malloc.h>
typedefstructLNode//链表结点
{
intdata;
structLNode*next;
}LNode,*LinkList;
intover_flag=0;
//主函数结束标识符
intLengthList(LinkListL);
voidPrintList(LinkListL);
/**********************************************************************
主函数
**********************************************************************/
voidmain(void)
{
charoperate;
LinkListL;
intn;
for(n=0;
n<
40;
n++)
{
printf("
label:
switch(operate)
//排除换行键的影响
if(over_flag)return;
}
}
创建链表
L)
inttemp;
创建链表:
\n请输入创建链表所需的整数值(以-1结束):
L=(LinkList)malloc(sizeof(LNode));
next=NULL;
LinkListq=L;
scanf("
%d"
temp);
while(temp!
=-1)
LinkListp;
p=(LinkList)malloc(sizeof(LNode));
p->
data=temp;
q->
next=p;
q=q->
next;
PrintList(L);
查询元素
voidLocate(LinkListL)
{if(!
L)printf("
错误:
链表未创建!
intelement;
查询数值:
\n输入要查询的数值:
element);
LinkListp=L->
inti=1;
while(p)
{
if(p->
data==element)
找到了,它是链表的第%d个元素。
\n"
i);
return;
p=p->
i++;
找不到。
插入数值
intx,i;
插入数值:
\n输入要插入的数值和插入的位置:
x);
i);
LinkListp=L;
intj=0;
while(p&
&
j<
i-1)
p=p->
++j;
}
if(!
p||j>
i-1)
输入位置错误!
);
return;
LinkLists=(LinkList)malloc(sizeof(LNode));
s->
data=x;
next=p->
next=s;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 Word