数据结构与算法上机实验报告

  • 格式:doc
  • 大小:502.00 KB
  • 文档页数:34

下载文档原格式

  / 34
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构与算法B上机实验报告

第1次2011-10-02 顺序表的实现和基本操作

第2次2011-10-29 二叉树的实现和递归遍历

第3次2011-11-23 内部排序

第4次2011-12-dd 实现图从邻接矩阵到邻接表存储转化

第一次线性表数据结构

一、上机实习题目

线性链表操作——插入、删除、合并、排序、查找二数据结构设计(算法设计)源程序(

#include

#define MaxSize 100

using namespace std;

typedef int ElemType;

class SeqList

{

ElemType list[MaxSize];

int length;

public:

SeqList() {length=0;}

void SeqListSort(int i,ElemType x);

void SeqListCreat(int n);

void SeqListInset(int i,ElemType x);

void SeqListDelete(int i);

void SeqListMerge();

int GetLength(){return length;}

int SeqListFind(ElemType x);

int SeqListIsEmpty();

void SeqListPrint();

}Mylist1,Mylist2;

//创建顺序表

void SeqList::SeqListCreat(int n)

{

ElemType x;

cout<<"请输入数据元素:";

for (int i=0;i

{

cin>>x;

list[i]=x;

length++;

}

}

//对顺序表进行排序

void SeqList::SeqListSort(int i,ElemType x) {

for(int k=0;k

{

for(i=k+1;i<=length;i++)

{

if(list[k]>list[i])

{

x=list[k];

list[k]=list[i];

list[i]=x;

}

}

}

}

//在顺序表L中的第i个位置插入新元素x void SeqList::SeqListInset(int i,ElemType x) {

int k;

if(length>=MaxSize)

cout<<"表已满,无法插入!"<

else if(i<0||i>length)

cout<<"参数i不合理!"<

else

{

for (k=length;k>=i;k--)

{list[k]=list[k-1];}

list[i-1]=x;

length++;

}

}

//删除第i个位置的数据元素

void SeqList::SeqListDelete(int i)

{

int k;

if(!SeqListIsEmpty())

cout<<"表已空,无法删除!"<

else if(i<0||i>length)

cout<<"参数i不合理!"<

else

for(k=i-1;k

list[k]=list[k+1];

length--;

}

//查找元素x在表中的位置

int SeqList::SeqListFind(ElemType x) {

int i=0;

while(i

if(i>length)return -1;

else

return i+1;

}

//判断顺序表是否为空

int SeqList::SeqListIsEmpty()

{

if(length<=0)return 0;

else return 1;

}

//将顺序表显示在屏幕上

void SeqList::SeqListPrint()

{

if(!SeqListIsEmpty())

cout<<"空表!"<

else

for(int i=0;i

cout<

cout<

}

int main()

{

SeqList Mylist1,Mylist2;

int i,n,flag=1,select;

ElemType x;

cout<<"1. 建立顺序表\n";

cout<<"2. 对顺序表进行排序\n";

cout<<"3. 求x数值的位置\n";

cout<<"4. 在第i个位置插入新元素x\n"; cout<<"5. 删除第i个位置上的数值\n"; cout<<"6. 将两个顺序表合并\n";

cout<<"7. 退出\n";

cout<

while (flag)

{

cout<<"请选择操作:";

cin>>select;

switch(select)

{

case 1:

cout<<"请输入顺序表1的长度:";

cin>>n;

Mylist1.SeqListCreat(n);

cout<<"你所输入的顺序表1为:";

Mylist1.SeqListPrint();

cout<<"请输入顺序表2的长度:";

cin>>n;

Mylist2.SeqListCreat(n);

cout<<"你所输入的顺序表2为:";