数据结构与算法上机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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为:";