数据结构实验报告 线性表的基本操作_数据结构实验线性表
数据结构实验报告 线性表的基本操作由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构实验线性表”。
}(一)单链表的基本操作
#include using namespace std;#define true 1 #define false 0 #define ok 1 #define error 0 #define overflow-2 typedef int Status;typedef int ElemType;typedef struct LNode //存储结构 { ElemType data;struct LNode *next;}LNode,*LinkList;void CreateList(LinkList &L,int n)//尾插法创建单链表 { LinkList p;L=new LNode;L->next=NULL;//建立一个带头结点的单链表
LinkList q=L;//使q指向表尾
} Status GetElem(LinkList L,int i,ElemType &e)//取第i个元素 { LinkList p=L->next;int j=1;while(p&&jnext;++j;} for(int i=1;i
cin>>p->data;p->next=NULL;q->next=p;q=p;} if(!p||j>i)return error;//第i个元素不存在 e=p->data;return ok;} Status LinkInsert(LinkList &L,int i,ElemType e)//插入 { LinkList p=L;int j=0;while(p&&jnext;++j;} //寻找第i-1个结点 if(!p||j>i-1)return error;//i小于1或者大于表长加1 LinkList s=new LNode;//生成新结点
s->data=e;s->next=p->next;//插入L中
p->next=s;return ok;}
Status ListDelete(LinkList &L,int i,ElemType &e)// 删除 { LinkList p=L;LinkList q;int j=0;while(p->next&&j
p=p->next;++j;} if(!(p->next)||j>i-1)return error;//删除位置不合理
q=p->next;p->next=q->next;//删除并释放结点
e=q->data;delete(q);return ok;
} void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){ //合并两个顺序链表
LinkList pa,pc,pb;pa=La->next;pb=Lb->next;Lc=pc=La;while(pa&&pb){ if(pa->datadata)
{ pc->next=pa;
pc=pa;pa=pa->next;} else
{ pc->next=pb;
pc=pb;
pb=pb->next;} } pc->next=pa?pa:pb;delete(Lb);} void show(LinkList L)//{ LinkList p;p=L->next;while(p){ coutdata“;p=p->next;} coutnext;while(p){ ++i;
显示 表长 3
p=p->next;} return i;} void xiugai(LinkList L)//修改 { int i,j=1;ElemType k;ElemType e,m;LinkList p=L->next;cout>i;GetElem(L,i,e);cout>k;while(p&&jnext;++j;} m=p->data;p->data=k;cout>a;cout>b;cout
CreateList(Lb,b);show(Lb);MergeList(La,Lb,Lc);cout>select;switch(select){ case 1:cout
cin>>x;
cout
CreateList(list,x);break;case 2: cout
show(list);break;case 3: int s;cout>x;while(xLength(list,s)){ cout>x;} GetElem(list,x,y);cout>x;while(xLength(list,s)){ cout>x;} cout>y;LinkInsert(list,x,y);cout>x;while(xLength(list,s)){ cout>x;} cout
ListDelete(list,x,y);
} break;case 8: hebing();break;case 9: exit(0);break;default : cout
四、测试结果 1)顺序表 的测试结果
82)单链表的测试结果
五、心得体会
当听到老师说写数据结构实验报告时,我有点惊讶,才学了不到一个月,就要写实验报告。记得去年学习C++时,学了一个学期,程序设计用了三周,才完成的,这个实验报告居然要一周完成两个设计,觉得很难。但是现在一周过去了,我也写完了,自我感觉良好。
通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼,而C++是填充这骨骼的肉体,二者相结合才能使整个程序更加完整,健全。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。数据结构+算法=程序设计。
在这次设计的过程中,我还遇到了,很多的问题。顺序表是按顺序存储的,用了一维数组来存储,又结合C++的程序设计,我又用了类,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。
单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。
这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。