实验二 线性表综合实验之《双链表》
来源:互联网 发布:java axis2 webservice 编辑:程序博客网 时间:2024/06/05 14:48
实验二 线性表综合实验之《双链表》
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验内容
建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现。
2)用单链表来实现。
3)用双链表实现。
4)用静态链表实现。
5)用间接寻址实现。
三.实验报告
1、代码
#includeusing namespace std;//双链表的存储template struct DulNode{DataType data;DulNode *prior,*next;};template class LinkList{public:LinkList();LinkList(DataType a[],int n);~LinkList();int Length();DataType Get(int i);int Locate(DataType x);void Insert(int i,DataType x);DataType Delete(int i);void PrintList();private:DulNode *first;};//遍历操作template void LinkList ::PrintList(){DulNode *p;p=first->next; //使其指向第一个元素while(p!=NULL){cout< data<<" ";p=p->next; //指针后移}cout< int LinkList ::Length(){DulNode *p;int count=0;p=first->next; //使其指向第一个元素while(p!=NULL){p=p->next; //指针后移count++;}return count;}//按位查找template DataType LinkList ::Get(int i){DulNode *p;int count=1;p=first->next;while(p!=NULL&&countnext;count++;}if(p==NULL) throw"位置";else return p->data;}//按值查找template int LinkList ::Locate(DataType x){DulNode *p;int count=1;p=first->next;while(p!=NULL){if(p->data==x) return count;p=p->next;count++;}return 0;}//插入操作template void LinkList ::Insert(int i,DataType x){DulNode *p,*s;int count=0;p=first; //p指向头节点while(p!=NULL&&count next;count++;}if(p==NULL) throw"位置";else{s=new DulNode ;s->data=x;s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;}}//无参构造函数template LinkList ::LinkList(){first=new DulNode; //头结点first->next=NULL;}//有参构造函数template LinkList ::LinkList(DataType a[],int n){DulNode *s,*r;first=new DulNode ;r=first;for(int i=0;i ;s->data=a[i];s->prior=r;r->next=s;r=s;}r->next=NULL;}//删除操作template DataType LinkList ::Delete(int i){DulNode *p;int count=0;p=first;DataType x;while(p!=NULL&&countnext;count++;}if(p==NULL) //结点p不存在或其后继结点不存在 throw"位置";else{x=p->data;(p->prior)->next=p->next;if(p->next!=NULL) (p->next)->prior=p->prior;delete p;return x;}}//析构函数template LinkList ::~LinkList(){DulNode *q;while(first!=NULL){ q=first;first=first->next;delete q;}}int main(){int arr[5]={78,98,88,79,67};int flag=0,loc,x,tab,len; LinkList List(arr,5); //install an objectcout<<"\n 双链表"< >tab; switch(tab) { case 1: {cout<<"1.输出表:"; List.PrintList();cout< >loc; x=List.Get(loc);cout <<"The number is:"< >x; loc=List.Locate(x); cout<<"The number's location is:"< >loc; cout<<"Please input the insert num:"; cin>>x; List.Insert(loc,x);cout< >loc;x=List.Delete(loc);cout<
2、调试结果
①、遍历操作及输出总学生人数
②、按位查找操作
③、按值查找操作
④、插入操作
⑤、删除操作
阅读全文
0 0
- 实验二 线性表综合实验之双链表
- 实验二 线性表综合实验之《双链表》
- 实验二 线性表综合实验之《双链表》
- 实验二线性表综合实验-双链表
- 实验二 线性表综合实验之顺序表
- 实验二 线性表综合实验之静态链表
- 实验二 线性表综合实验之《静态链表》
- 实验二 线性表综合实验之《顺序表》
- 实验二 线性表综合实验之《静态链表》
- 实验二 线性表综合实验之单链表
- 实验二 线性表综合实验之间接寻址
- 实验二 线性表综合实验之《单链表》
- 实验二 线性表综合实验之《间接寻址》
- 实验二 线性表综合实验之《单链表》
- 实验二 线性表综合实验之《间接寻址》
- 《数据结构》实验二 线性表综合实验
- 实验二线性表综合实验
- 实验二 线性表综合实验(1)
- Android通过Chrome Inspect调试Webview出现空白页面的问题
- 形参和实参
- 转载 DM9000的调试
- (六)整合spring cloud云服务架构
- HTML5的市场状况
- 实验二 线性表综合实验之《双链表》
- 【hautoj1307】CF
- 高并发系统的瓶颈与优化总结
- 跨语言RPC框架Thrift详解
- JavaBean
- JSON
- C语言之指针专题三:理解指针要和内存四区模型和函数调用模型相结合
- ACM ICPC 2017 Warmup Contest 2(ACM Northeastern European Regional Contest,Northern Subregion 2016)
- BlockingQueue 接口详解