1、struct link elemtype data;/元素类型 link *next; /指针类型,存放下一个元素地址; /头插法建立带头结点的单链表 link *hcreat() link s,p; elemtype i; couti;p=new link; p-next=NULL; while(i) /当输入的数据不为0时,循环建单链表 s=new link; s-data=i;next=p-next;next=s; cin return p;/输出单链表void print(1ink *head) 1ink *p; p=head- while(p-next!=NULL) coutdata
2、”; /输出表中非最后一个元素p=p-data; /输出表中最后一个元素endl; 在单链表head中查找值为x的结点Link *Locate(1ink *head,elemtype x)Link *p; while(p!=NULL)&(p-data!=x) p=p-/在head为头指针的单链表中,删除值为x的结点 void deletel(1ink *head,elemtype x) 1ink *p, *q; q=head;q=p;If(p=NULL) coutnext=p -delete(p);/在头指针head所指的单链表中,在值为x的结点之后插入值为y的结点void insert(1i
3、nk *head,elemtype x,elemtype y) link *p, *s; s=new link;data=y; if(head-next=NULL) /链表为空head-s-next=NULL:p=Locate(head,x);/调用查找算法 if(p=NULL)”插入位置非法”:(s-/将单链表p中所有值为x的元素修改成yvoid change(1ink *p,elemtype x,elemtype y)link *q;q=p-while(q! if(q-data=x) q- q=q-void count(1ink *h) /统计单链表中结点个数1ink *p;int n=0
4、;p=h-while(p!n+;return n;void main() int n; elemtype x,y; link *p, *q; p=hcreat(); /头插法建立链表 print(p); /输出刚建立的单链表”请输入要删除的元素”;y; deletel(p,y); /输出删除后的结果”请输入插入位置的元素值(将待插元素插入到它的后面)”;x;”请输入待插元素值”; insert(p,x,y); /输出插入后的结果”请输入要修改前、后的元素值”;x change(p,x,y);”请输入要查找的元素值”; q=Locate(p,x); if(q=NULL)coutx”不在表中,找不
5、到!” else cout”在表中,已找到! n=count(p);”链表中结点个数为:nendl:/单链表的建立(尾插法)、插入、删除、查找、修改、计数、输出#include r=s;return p;link *p;-”; ) link *Locate(1ink *head,int x) 在单链表中查找第x个结点 link *p; p=head; int j=0;(jnext; j+; void delete I(1ink *head,elemtype x) link *p, *q;) if(p=NULL)cout /调用查找算法 if(p=NULL)”插入位置非法”; s-void ch
6、ange(1ink *p,elemtype x,elemtype y)将单链表P中所有值为x的元素改成值为y q=p- while(q! if(q-data=x)q-(1ink *p; retum n; int n; link p,q;p=rcreat();/尾插法建立链表print(p);deletel(p,y);”请输入插入位置”;insert(p,x,y);”请输入修改前、后的元素值”;change(p,x,y);“请输入要查找的元素值”;q=Locate(p ,x);if(q=NULL)cout”不在表中,找不到!else coutn=count(p);endl;六、选作实验试设计一元
7、多项式相加(链式存储)的加法运算。 A(X)=7+3X+9X8+5X9 B(X)=8X+22X7-9X8 1建立一元多项式; 2输出相应的一元多项式; 3相加操作的实现。实验二 循环链表的操作 通过本实验中循环链表和双向链表的使用,使学生进一步熟练掌握链表的操作方式。 本次实验可以从以下两个实验中任选一个: 1建立一个单循环链表并实现单循环链表上的逆置。 所谓链表的逆置运算(或称为逆转运算)是指在不增加新结点的前提下,依次改变数据元素的逻辑关系,使得线性表(al,a2,a3,an)成为(an,a3,a2,a1)。2. 构建一个双向链表,实现插入、查找和删除操作。 建立一个带头结点的单循环链表,从
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1