数据结构线性表实验报告
- 格式:doc
- 大小:285.50 KB
- 文档页数:17
一、实验目的和要求
(1)理解线性表的逻辑结构特性。
(2)深入掌握线性表的两种存储方法,即顺序表和链表。体会这两种存储结构之间的差异。
(3)重点掌握顺序表和链表上各种基本运算的实现。
(4)综合运用线性表解决一些复杂的实际问题。
二、实验内容
实验2.1 编写一个程序algo2-1.cpp,实现顺序表的各种基本运算(假设顺序表的元素类型为char),并在此基础上设计一个程序exp2-1.cpp,完成如下功能:
(1)初始化顺序表L;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出顺序表L;
(4)输出顺序表L长度;
(5)判断顺序表L是否为空;
(6)输出顺序表L的第三个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出顺序表L;
(10)删除L的第3个元素;
(11)输出顺序表L;
(12)释放顺序表L。
实验2.2 编写一个程序algo2-2.cpp,实现单链表的各种基本运算(假设单链表的元素类型为char),并在此基础上设计一个程序exp2-2.cpp,完成如下功能:
(1)初始化单链表h;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出单链表h;
(4)输出单链表h长度;
(5)判断单链表h是否为空;
(6)输出单链表h的第三个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出单链表h;
(10)删除L的第3个元素;
(11)输出单链表h;、
(12)释放单链表h。
释放顺序表L。
实验2.3 编写一个程序algo2-3.cpp,实现双链表的各种基本运算(假设双链表的元素类型为char),并在此基础上设计一个程序exp2-3.cpp,完成如下功能:
(1)初始化双链表h;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出双链表h;
(4)输出双链表h长度;
(5)判断双链表h是否为空;
(6)输出双链表h的第三个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出双链表h;
(10)删除L的第3个元素;
(11)输出双链表h;、
(12)释放双链表h。
三、实验过程描述
实验2.1
程序algo2-1.cpp如下:
#include
#include
#define MaxSize100
typedef
char
Elem Type;
typedef
struct
{
ElemType data[MaxSize];
in length;
}
SqList;
void int(SqList*&L)
{
L=(SqLIST*&L)
{
L=(SqList*)maiioc(sizeofSqList))
L->length=0;
}
voidCreateList(SqList*&L,Elemtypesource[],int n) {
inti;
for(i=0;i { L_>data[i]=source[i]; } L-ength=n; } void DisplayList(SqList*L) { int i; for(i=0;i printf("%c\t",L->data[i]; } printf("\n"); } void main() { SqLi\list*h; char a[]={,'a','b'.'c','d','e'}; Init(h); printf("before Create length=%d\n",h->length); CreateList(h,a,s); DisplayList(h); printf("after Create Length=%d\n:,h->length); } #include #include #define MaxSize100 typedef char Elem Type; typedef struct { ElemType data[MaxSize]; in length; } SqList; void int(SqList*&L) { L=(SqLIST*&L) { L=(SqList*)maiioc(sizeofSqList)) L->length=0; } voidCreateList(SqList*&L,Elemtypesource[],int n) { inti; for(i=0;i { L_>data[i]=source[i]; }