- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
注意事项
注意事项:
在磁盘上创建一个目录,专门用于存储数据结构实验的程序。因为机房机器有还原卡,请同学们将文件夹建立在最后一个盘中,以学号为文件夹名。
实验二 单链表操作
1.掌握使用VC++上机调试线性表的基本方法;
2.掌握线性表链式存储结构上的基本操作:
插入、删除、查找以及合并有序表等运算在链式存储结构上的实现。
二 实验要求
1.认真阅读并理解教材上相关操作函数。
2.正确编写本程序并能上机运行。
必须完成:
定义单链表结点结构
建立单链表
求表长
查找元素(给出位序,查找元素值)
插入操作
删除操作
输出表中元素
主函数(操作函数的调用)
选择完成:
翻转表
合并有序表
求两个表并集
可以自己重新编写程序,也可以将参考程序框架中剩余的操作函数补齐。
三 程序框架参考如下
注意:
函数调用时的函数名、实参与函数定义时的函数名、形参要能一一对应。
下列程序中函数的参数有引用参数,若不使用引用参数,而用指针参数的话,应该将主函数中函数调用的形式也改过来。
#includeiostream.h
//元素类型以整型为例
typedef int ElemType;
//定义结点类型
struct LNode
{
ElemType data;
struct LNode *next;
};
typedef struct LNode LNode;
typedef struct LNode *LinkList;
//求表长
int ListLength(LinkList L)
{
}
//查找元素,获取表中第i个元素的值
int GetElem(LinkList L,int i,ElemType e)
{
}
//判断元素e是否在该链表中
int LocateElem(LinkList La,ElemType e)
{
LinkList p;
p=La;
int i=0;
while(p-next)
{
p=p-next;
i++;
if(p-data==e)
return i;
}
return 0;
}
//打印表中元素值
void PrintList(LinkList L)
{
LinkList p;
p=L;
while(p-next)
{
p=p-next;
coutp-dataends;
}
coutendl;
}
//插入操作
int ListInsert(LinkList L,int i,ElemType e)
{
}
//删除操作
int ListDelete(LinkList L,int i,ElemType e)
{
}
// 头插法建表
int CreateList(LinkList L,int n)
{
}
/*
//合并两个有序表
void MergeList(LinkList La,LinkList Lb,LinkList Lc)
{
}
//翻转表
void ReverseList(LinkList L)
{
}
//求并集
void UnionList(LinkList La,LinkList Lb)
{
}*/
//主函数
void main()
{
LinkList La;
ElemType e; int i,n;
cout1 建第一个表\n;
cout请输入La表中元素个数:;
cinn;
cout请输入n个元素值:(头插法建表,请逆序输入)\n;
CreateList(La,n);
cout表中元素为:;
PrintList(La);
coutLa的表长为:ListLength(La)endl;
//取值
cout\n2 查找第i位元素的值:\n请输入位序:;
cinn;
GetElem(La,n,e);
cout第n位元素的值为:eendl;
//定位
cout\n3 定位操作:\n请输入要查找的元素:;
cine;
i=LocateElem(La,e);
if(i)
cout所要查找的元素在表中第i位\n;
else
cout表中无该元素\n;
//插入
cout\n4 插入操作:\n输入要插入元素的位序:;
cini;
cout输入要插入的元素值:;
cine;
ListInsert(La,i,e);
cout插入后表中元素为:;
PrintList(La);
//删除
cout\n4 删除操作:\n输入要删除元素的位序:;
cinn;
Lis
文档评论(0)