一、实验项目名称
单链表的创建及基本操作
二、实验目的
1.掌握顺序表的基本运算,如插入、删除等。 2.掌握单链表的基本运算,如插入、删除等。
三、实验内容
1.线性表在顺序存储结构上的初始化,插入元素,删除元素,查找元素等基本操作。 2. 两个顺序表合并。
2.线性表在链式存储结构上的建链表,插入结点,删除结点操作。 3. 一元多项式相加(选做)
四、主要仪器设备及耗材
VC++6.0运行环境实现其操作
五、实验步骤
1.实验程序代码
#include public: int data; link *next; }; class linklist { protected: link *head; public: link *rcreat() { link *s,*p,*r; int i; cout<<\"输入多个结点数值(用空格分隔),为0时算法结束\"; cin>>i; p=r=new link; p->next=NULL; while(i) { s=new link; s->data=i; r->next=s; r=s; cin>>i; } r->next=NULL; return p; } void print(link *head) { link *p; p=head->next; while(p->next!=NULL) { cout< void deletel(link *head,int x) { link *p,*q; q=head; p=head->next; while((p!=NULL)&&(p->data!=x)) { q=p; p=p->next; } if(p==NULL) cout<<\"要删除的结点不存在\"; else { q->next=p->next; delete(p); } } void insert(link *head,int x,int y) { link *p,*s; s=new link; s->data=y; if(head->next==NULL) { head->next=s; s->next=NULL; } p=Locate(head,x); if(p==NULL) cout<<\"插入位置非法\"; else { s->next=p->next; p->next=s; } } void change(link *p,int x,int y) { link *q; q=p->next; while(q!=NULL) { if(q->data==x) q=q->next; } } int count(link *h) { link *p; int n=0; p=h->next; while(p!=NULL) { n++; p=p->next; } return n; } }; void main() { int n; int x,y; link *p,*q; linklist a; p=a.rcreat(); a.print(p); cout<<\"请输入要删除的元素\"; cin>>y; a.deletel(p,y); a.print(p); cout<<\"请输入插入位置\"; cin>>x; cout<<\"请输入待插入元素值\"; cin>>y; a.insert(p,x,y); a.print(p); cout<<\"请输入修改前后的元素值\"; cin>>x>>y; a.change(p,x,y); a.print(p); cout<<\"请输入要查找的元素值\"; cin>>x; q=a.Locate(p,x); if(q==NULL) cout< cout<<\"链表中结点个数为:\"< 1.处理结果 七、思考讨论题或体会或对改进实验的建议 (1)体会 a.C++语言知识不懂,需要好好学习; b.对单链表不够熟悉,要多练习创建单链表及其基本操作。 八、参考资料 a.《数据结构》 李根强主编 中国国水利水电出版社 b.《C++语言程序设计》 郑莉 董渊 何江舟编 清华大学出版社 因篇幅问题不能全部显示,请点此查看更多更全内容