数据结构_实验二_线性表及其实现剖析
实验编号:2 四川师大《数据结构》实验报告 2016年9月30日
实验二 线性表及其实现_
实验目的及要求
熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现,以线性表的各种操作(建立、插入、删除等)的实现为实验重点。
通过本次实验帮助学生加深对顺序表、链表的理解,并加以应用。
掌握循环链表和双链表的定义和构造方法。
实验内容
编程实现线性表基本操作的实现创建、插入、删除查找L,并编写程序实现:
将x插入其中后仍保持L的有序性;
将数据值介于min和max之间的结点删除,并保持L的有序性;
将单链表L逆置并输出;
编程实现将两个按元素递增有序的单链表合并为一个新的按元素递增的单链表。
注:(1)为必做题,(2)~(3)选做。
主要仪器设备及软件
(1) PC机
(2) Dev C++ ,Visual C++, VS2010等
实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)
编程实现线性表两种存储结构(顺序存储、链式存储)中的基本操作的实现(线性表的创建、插入、删除、查找(顺序查找、折半查找)、排序等),并设计一个菜单调用线性表的基本操作。
A.顺序储存:
代码部分:
Main.cpp:
#includeSqlist.h
int main()
{
Sqlist L;
int e = 0, number=0,locat =0,elect=0;
int ret;//存放返回值
printf(请先创建一个含有10个整型元素的顺序表!\n);
Initlist_Sq(L);
do {
elect=Print_Sq(L);
switch (elect)
{
case 0:
break;
case 1://插入
printf(请输入你想添加的位置和数字(用空格隔开):);
scanf_s(%d%d,number,locat);
ListInsert_Sq(L, number, locat);
break;
case 2://删除
printf(请输入你想删除数字的位置:);
scanf_s(%d, locat);
listDelete_Sq(L, locat, e);
printf(the delete number is %d\n, e);
break;
case 3://顺序查找
printf(请输入你想查找的数字:);
scanf_s(%d, number);
ret=listFine1_Sq(L, locat, number);
if(ret)
{
printf(%d在表中的位置是%d\n, number, locat);
}
break;
case 4://折半查找
printf(请输入你想查找的数字:);
scanf_s(%d, number);
ret=listFine2_Sq(L, locat, number);
if(ret)
{
printf(%d在表中的位置是%d\n, number, locat);
}
break;
case 5://升序
Ascending_Sq(L);
break;
case 6://降序
Decending_Sq(L);
break;
default:
printf(输入错误!!\n);
}
} while (elect != 0);
system(pause);
return 0;
}Sqlist.cpp:
#includeSqlist.h
//输出表格
int Print_Sq(Sqlist L)
{
int i = 0;
printf(现有线性表:\n);
for (; i L.length; i++)
{
printf(%5d, L.elem[i]);
}
printf(\n);
i = 0;
printf(***********************************\n);
printf(*************1.插入*****
原创力文档

文档评论(0)