ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:49.67KB ,
资源ID:5955857      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5955857.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(3数据结构实验3链表.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

3数据结构实验3链表.docx

1、3数据结构实验3链表实 验 报 告院(系):信息科学与技术学院 课程名称:数据结构 日期:班级信A1321学号11314030119实验室专业信息管理与信息系统姓名黄伟峰计算机号实验名称实验三 线性链表的运算成绩评定所用软件V C或TC教师签名实验目的1.掌握线性链表的基本概念2.掌握线性链表的建立、插入和删除等方法。3.掌握线性链表的基本算法。实验准备1.复习书上有关内容。2.阅读实验内容1,进行程序填空,并编制相应的主函数。3.编出实验内容的源程序。实验总结一、程序填空:#include #include typedef char elemtype;typedef struct node

2、elemtype data; struct node *next;node,*linklist;/建立链表linklist createlistf() char ch; linklist head; node *p; head=(linklist)malloc(sizeof(node);/建立新节点 head-next=NULL; ch=getchar(); while (ch!=$) p=(node*)malloc(sizeof(node);/建立新的节点 p-data=ch; p-next=head-next;/将head插入头结点 head-next=p; ch=getchar(); r

3、eturn(head); /在链表的p指定节点后插入值为x的节点int link(node *p,char x) node *s;/定义指向节点的指针 s=(node*)malloc(sizeof(node); s-data=x;/将值插入s数据域中 s-next=p-next; p-next=s; return 1;/删除指点节点后的节点void DelLinkList(node *p) node*q; if (p-next!=0) q=p-next;/q指向p的后续节点 p-next=q-next;/修改p节点的指针域 free(q);/释放q /在链表中查找指定的节点node *lbcz

4、(node *h,elemtype x) node *p; p=h-next; while (p!=0 p-data!=x) p =p-next; return(p);/链表的输出void printlink(node *h) node *p; p=h-next; printf(n); while (p!=0) printf(%c,p-data); p=p-next; printf(n);void main() char x; int m; char y; node *a; node *b; printf(输入值以$结束:n); a=createlistf(); printlink(a); p

5、rintf(输入要查找的节点:n); getchar(); scanf(%c,&x); b=lbcz(a,x); printlink(a); DelLinkList(b); printlink(a); printf(输入要插入的值:n); getchar(); scanf(%c,&y); m=link(b,y); if (m) printf(插入成功!); printlink(a); else printf(插入失败!);二、源代码以及输入数据输出结果为:/单链表中输入数据个数为10个,依次是1,3,5,7,12,45,67,89,92,99。#include #include #includ

6、e typedef struct Node int data;/数据域 struct Node *pNext;/指针域NODE,*PNODE;/函数声明PNODE create_list(void);void treaverse_list(PNODE PHead);PNODE Locate(PNODE pHead,int e);/查找节点int link(PNODE p,int e);/插入函数int main(void) int e=25; PNODE pHead=NULL;/等价于struct Node *Phead=NULL; PNODE p; pHead=create_list();/

7、create_list()/功能:创建一个非循环链表,并将该量表的空间给pHead treaverse_list(pHead); p=Locate(pHead,e); treaverse_list(p); link(p,e); treaverse_list(pHead); return 0;PNODE create_list(void) int val; int len;/用于存放节点的有效个数 int i; PNODE pHead=(PNODE)malloc(sizeof(Node); if (NULL=pHead) printf(分配失败,程序终止:n); exit(-1); PNODE

8、PTail=pHead; PTail-pNext=NULL; printf(请输入要生成的链表数据个数:len=); scanf(%d,&len); for (i=0;idata=val; PTail-pNext=pNew; pNew-pNext=NULL; PTail=pNew; return pHead;void treaverse_list(PNODE PHead) PNODE p=PHead-pNext; while (p!=NULL) printf(%5d,p-data); p=p-pNext; printf(n);PNODE Locate(PNODE pHead,int e)/查找

9、节点 PNODE p=pHead-pNext; /PNODE q=(PNODE)malloc(sizeof(Node); while(p!=NULL) if (p-pNext-datapNext; p=p-pNext; else break; return p; int link(PNODE pHead,int e)/插入 PNODE p=pHead; PNODE q=(PNODE)malloc(sizeof(Node); q-data=e;/将值插入s数据域中 q-pNext=p-pNext; p-pNext=q; return 1;三、源代码以及实验结果为#include#includet

10、ypedef char elemtype;typedef struct node elemtype data; struct node *next;NODE,*PNODE;PNODE chuanjiang()/创建函数 char ch; PNODE head; NODE *p; printf(头插法建立链表n); printf(请输入字符串,以回车键结束:); head=(PNODE )malloc(sizeof(NODE); head-next=0; ch=getchar(); while(ch!=n) p=(NODE *)malloc(sizeof(NODE); p-data=ch; p-

11、next=head-next; head-next=p; ch=getchar(); return (head);void plink(NODE *h)/输出NODE *p;p=h-next;printf(n);while (p!=NULL) printf(%c,p-data); p=p-next; printf(n);void shanchu(PNODE H) /删除NODE *p,*q,*r; p=H-next; while (p!=NULL) q=p; while (q-next!=NULL) if (q-next-data=p-data) r=q-next; q-next=r-next

12、; free(r); else q=q-next; p=p-next; void main() NODE *h; h=chuanjiang(); printf(创建的链表是:n); plink(h); printf(删除链表中相同的值:n); shanchu(h); printf(删除后链表的值:n); plink(h);四、源代码以及实验结果为/单链表中输入数据个数为10个,依次是1,3,5,7,12,45,67,89,92,99。#include #include #include typedef struct Node int data;/数据域 struct Node *pNext;/

13、指针域NODE,*PNODE;/函数声明PNODE create_list(void);void treaverse_list(PNODE PHead);/链接函数PNODE twoLinkList(PNODE A,PNODE B);int main(void) PNODE A=NULL;/等价于struct Node *Phead=NULL; PNODE B=NULL; PNODE C=NULL; A=create_list();/create_list()/功能:创建一个非循环链表,并将该量表的空间给pHead B=create_list(); treaverse_list(A); tre

14、averse_list(B); C=twoLinkList(A,B); treaverse_list(C); return 0;PNODE create_list(void) int val; int len;/用于存放节点的有效个数 int i; PNODE pHead=(PNODE)malloc(sizeof(Node); if (NULL=pHead) printf(分配失败,程序终止:n); exit(-1); PNODE PTail=pHead; PTail-pNext=NULL; printf(请输入要生成的链表数据个数:len=); scanf(%d,&len); for (i=

15、0;idata=val; PTail-pNext=pNew; pNew-pNext=NULL; PTail=pNew; return pHead;void treaverse_list(PNODE PHead) PNODE p=PHead-pNext; while (p!=NULL) printf(%5d,p-data); p=p-pNext; printf(n);PNODE twoLinkList(PNODE A,PNODE B)/合并链表 PNODE pa=A-pNext; PNODE pb=B-pNext; PNODE pc; PNODE Lc; Lc=A; Lc-pNext=NULL;

16、 pc=Lc; while(pa & pb) if(pa-datadata) pc-pNext=pa; pc=pa; pa=pa-pNext; else pc-pNext=pb; pc=pb; pb=pb-pNext; pc-pNext=pa?pa:pb; free(B); return(Lc);五、源代码以及实验结果为#include#includetypedef char elemtype;typedef struct node elemtype data; struct node *next;NODE,*PNODE;PNODE chuanjiang()char ch;PNODE head

17、;NODE *p;head=(PNODE )malloc(sizeof(NODE);head-next=head; ch=getchar();while(ch!=n) p=(NODE *)malloc(sizeof(NODE);p-data=ch;p-next=head-next;head-next=p;ch=getchar();return(head);void plink(NODE *h)/单链表的输出 NODE *p; p=h-next; while(p!=NULL) printf(%c,p-data); p=p-next; printf(n);void pooiplink(PNODE

18、h)/循环链表的输出 NODE *p; p=h-next; while(p!=h) printf(%c,p-data); p=p-next; printf(n);void chaifen(PNODE h,PNODE *a,PNODE *b)NODE *ar,*br,*p; if(h-next=h) return ; (*a)=(PNODE )malloc(sizeof(NODE); (*a)-next=*a; ar=*a; (*b)=(PNODE )malloc(sizeof(NODE); (*b)-next=*a; br=*b; p=h-next; while(p!=h) if(p-data=0 & p-datanext=p;ar=ar-next; else br-next=p;br=br-next; p=p-next; ar-next=*a; br-next=*b;void main() NODE *a;PNODE b,c;a=chuanjiang();printf( 建立的循环单链表 :);plink(a);printf(n);chaifen(a,&b,&c);printf(拆分后的数字字符链表:);plink(b);printf(拆分后的字母字符链表:);plink(c);六、实验体会:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1