实验一 线性表链式表示和实现Word文件下载.docx
- 文档编号:6489419
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:16
- 大小:204.52KB
实验一 线性表链式表示和实现Word文件下载.docx
《实验一 线性表链式表示和实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验一 线性表链式表示和实现Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。
□演示性实验□验证性实验□操作性实验□综合性实验
实验地点
H113
实验仪器台号
指导教师
黄淑英
实验日期及节次
星期一下午三节课
一、实验综述
1、实验目的及要求
目的要明确,要抓住重点,符合实验指导书中的要求(使用时斜体字删去,下同)
1.掌握用C语言调试程序的基本方法。
2.掌握线性表的基本运算,如创建、插入、删除等。
输入链表的各个数据域的值,同时显示创建的链表结点数据;
实现在第i个结点的之前插入一个新的结点,并显示插入后的链表结点情况;
实现将第i个结点删除,并将删除后的链表结点情况显示出来。
2、实验仪器、设备或软件
实验所使用的仪器设备、工具等的名称及规格。
DevC++
二、实验过程(实验步骤、记录、数据、分析)
#include<
stdio.h>
malloc.h>
string.h>
stdlib.h>
#defineOK1
#defineERROR0
#defineOVERFLOWER-2
typedefstructLNode
{
intdata;
structLNode*next;
}LNode,*LinkList;
voidCreateList(LinkList&
L,intn)
inti;
LinkListp,q;
L=(LinkList)malloc(sizeof(LNode));
L->
next=NULL;
q=L;
printf("
请输入%d个数据:
\n"
n);
for(i=1;
i<
=n;
i++)
p=(LinkList)malloc(sizeof(LNode));
scanf("
%d"
&
p->
data);
q->
next=p;
q=q->
next;
}
voidListTraverse(LinkListL)
LinkListp=L->
while(p)
printf("
%2d"
p->
p=p->
);
voidListInsert(LinkList&
L,inti,inte)
intj=0;
LinkLists,p=L;
while(p&
&
j<
i-1)
j++;
s=(LinkList)malloc(sizeof(LNode));
s->
data=e;
next=p->
next=s;
voidListDelete(LinkList&
L,inti)
LinkListp=L,q;
while((p->
next)&
++j;
q=p->
next;
next=q->
deleteq;
intmain()
inti=3;
inte=5;
intn=5;
intc=3;
LinkListLa,Lb,Lc;
CreateList(La,n);
ListTraverse(La);
CreateList(Lb,n);
ListInsert(Lb,i,e);
ListTraverse(Lb);
CreateList(Lc,n);
ListDelete(Lc,c);
ListTraverse(Lc);
returnOK;
三、结论
1、实验结果
根据实验过程中所见到的现象和测得的数据,做出结论
2、分析讨论
对本次实验的心得体会、思考和建议。
①例中采用了正向排序,其实还可以考虑逆向排序;
②main函数内创建、遍历、删除还可以再简化;
③界面文字的优化,对用户更加友好。
④对插入、删除位置为0或负数的防范(error的使用)
⑤考虑用c++的形式使用
基于以上①~⑤的考虑,我又花费了一下午和晚上一点时间对代码进行了优化:
iostream>
usingnamespacestd;
typedefstructLNode//p30、31——单链表的存储结构
voidCreatList_R(LinkList&
L,intn)//p38算法2.12后插法创建单链表
LinkListr,p;
L=newLNode;
//用new运算符开辟动态空间,生成头结点,此处相当于L=(LinkList)malloc(sizeof(LNode))
r=L;
for(i=0;
n;
++i)
p=newLNode;
//生成新结点
cin>
>
p->
data;
r->
r=p;
intListInsert(LinkList&
LinkListp=L;
LNode*s;
p=L;
(j<
i-1))
{p=p->
++j;
if(!
p||j>
i-1)returnERROR;
s=newLNode;
intListDelete(LinkList&
L,inti)//p35算法2.10
intj;
LinkListp,q;
j=0;
while(p->
next&
(p->
next)||j>
while(p)
cout<
<
data<
"
;
endl;
intmain(void)
LinkListL;
intn;
//创建的数据个数
//插入到第i位
inte;
//插入的数据
intd;
//删除的数据
inta,b;
//a==ListInsert(L,i,e);
b==ListDelete(L,d);
请输入所创单链表的数据个数:
"
std:
:
//等价于scanf("
n);
CreatList_R(L,n);
您创建的单链表为:
ListTraverse(L);
请输入插入数据:
e;
插入到第几位:
i;
a=ListInsert(L,i,e);
if(a==ERROR)
操作失败!
<
else
删除数据第几位:
d;
b=ListDelete(L,d);
if(b==ERROR)
下面是优化后的界面:
以及对error的检测利用:
下面对代码进行进一步的优化:
typedefintElemType;
typedefintStatus;
ElemTypedata;
StatusListInsert(LinkList&
L,inti,ElemTypee)
i-1)returnERROR;
StatusListDelete(LinkList&
intj=1;
while(j)
intchoice;
endl<
操作(1:
插入2:
删除3:
退出):
choice;
switch(choice)
case1:
{
break;
case2:
case3:
合作愉快,下次再来!
}
default:
cout<
输入错误,请重新输入!
}下面为最终优化效果:
四、指导教师评语及成绩:
评语:
指导教师依据学生的实际报告内容,用简练语言给出本次实验报告的评价和价值
成绩:
指导教师签名:
批阅日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验一 线性表链式表示和实现 实验 线性 表链 表示 实现