实验目的
实验内容和要求
源代码
顺序表的代码
单链表的代码
测试结果
顺序表的测试结果
单链表的测试结果
五、心得体会
实验一线性表的基本操作及其应用
一、实验目的
1、帮助读者复习C++语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实现。
4、掌握顺序表的存储结构形式及其描述和基本运算的实现。
5、熟练掌握动态链表结构及有关算法的设计
二、实验内容
题目一:顺序表的基本操作
[问题描述]
实现顺序表的建立、求长度,取元素、修改元素、插入、删除等顺序表的基本操作。
[基本要求]
(1)依次从键盘读入数据,建立带头结点的顺序表;
(2)输出顺序表中的数据元素
(3)求顺序表的长度;
(4)根据指定条件能够取元素和修改元素;
(5)实现在指定位置插入和删除元素的功能。
(6)根据算法,将两个有序的顺序表合并成一个有序顺序表。
[测试数据] 由学生任意指定。
题目二:单链表的基本操作
[问题描述]
实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。
[基本要求]
(1)依次从键盘读入数据,建立带头结点的单链表;
(2)输出单链表中的数据元素
(3)求单链表的长度;
(4)根据指定条件能够取元素和修改元素;
(5)实现在指定位置插入和删除元素的功能。
(6)根据算法,将两个有序的单链表合并成一个有序单链表。
[测试数据]
由学生任意指定。
三、源代码
顺序表的基本操作
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct { //结构体
ElemType *elem;
int length;
int listsize;
}SqList;
SqList Lx;
Status InitList_Sq(SqList &L) //分配空间
{ =new ElemType[LIST_INIT_SIZE];
if(!)exit(OVERFLOW);
=0;
=LIST_INIT_SIZE;
return OK;
}
Status ListInsert(SqList &L,int i,ElemType e) //插入新元素
{ int *q,*p;ElemType *newbase;
if(i<1 || i>+1) return ERROR;
if(>=)
{ newbase=new ElemType[+LISTINCREMENT];
if(!newbase) exit(OVERFLOW);
=newbase;
+=LISTINCREMENT;
}
q=&([i-1]);
for (p=&([-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++;
return OK;
}
Status Listlength(SqList L) //长度
{ int *p=; //判断线形表是否存在
while(p)
{ return (); }
}
Status GetElem(SqList L, int i,ElemType &e) //取元素
{ if(i<1 || i>)
return ERROR;
else
{ e=[i-1];
return e;
}
}
void MergeList(SqList La,SqList Lb,SqList &Lc) //合并
{ ElemType ai,bj;
InitList_Sq(Lc);
int i=1,j=1,k=0;
int La_len,Lb_len;
La_len=Listlength(La);
Lb_len=Listlength(Lb);
while((i<=La_le
数据结构--实验报告 线性表的基本操作 来自淘豆网m.daumloan.com转载请标明出处.