




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
“数据结构和算法 II”课程实验报告 实验名称:线性表的综合应用 班级_ 14 知识产权 1 班 _ 姓名 学号 _ 实验日 期: 2015/04/08 实验机时:2 学时 实验成绩: - 实验目的:掌握顺序表和链表的概念,学会对问题进行分析,选 择恰当的逻辑结构和物理结构 加深对顺序表和链表的理解,培养解决实际问题的编程能力 实验内容: 实现一元稀疏多项式的表示及基本操作(建立、销毁、输出、加 法、减法、乘法等操作) ; 一.实验内容:实现一元稀疏多项式的表示及基本操作(建立, 销毁,输出,加法,减法,求项数等操作)一元多项式一定 要包含系数项和指数项的描述,对一元多项式的基本运算, 可应用两个有序链表合并的思想进行 二程序及注释:#include“stdio.h“ #include“string.h“ #include“stdlib.h“ #include“ctype.h“ typedef struct node /定义结点 char data10; /结点的数据域为字符串 struct node *next; /结点的指针域 ListNode; typedef ListNode * LinkList; / 自定义 LinkList 单链表类型 LinkList CreatListR1(); /函数,用尾插入法建立带头结点的单链表 LinkList CreatList(void); /函数,用头插入法建立带头结点的单链表 ListNode *LocateNode(); /函数,按值查找结点 void DeleteList(); /函数,删除指定值的结点 void printlist(); /函数,打印链表中的所有值 void DeleteAll(); /函数,删除所有结点,释放内存 ListNode * AddNode(); /修改程序:增加节点。用头插法,返回头指针 /=主函数= void main() char ch10,num5; LinkList head; head=CreatList(); /用头插入法建立单链表,返回头指针 printlist(head); /遍历链表输出其值 printf(“ Delete node (y/n):“); /输入“y“或“n“去选择是否删除结点 scanf(“%s“,num); if(strcmp(num,“y“)=0 | strcmp(num,“Y“)=0) printf(“Please input Delete_data:“); scanf(“%s“,ch); /输入要删除的字符串 DeleteList(head,ch); printlist(head); printf(“ Add node ? (y/n):“); /输入“y“或“n“去选择是否增加结点 scanf(“%s“,num); if(strcmp(num,“y“)=0 | strcmp(num,“Y“)=0) head=AddNode(head); printlist(head); DeleteAll(head); /删除所有结点,释放内存 /=用尾插入法建立带头结点的单链表= LinkList CreatListR1(void) char ch10; LinkList head=(LinkList)malloc(sizeof(ListNode); /生成头结点 ListNode *s,*r,*pp; r=head; r-next=NULL; printf(“Input # to end “); /输入“#“代表输入结束 printf(“nPlease input Node_data:“); scanf(“%s“,ch); /输入各结点的字符串 while(strcmp(ch,“#“)!=0) pp=LocateNode(head,ch); /按值查找结点,返回结点指针 if(pp=NULL) /没有重复的字符串,插入到链表中 s=(ListNode *)malloc(sizeof(ListNode); strcpy(s-data,ch); r-next=s; r=s; r-next=NULL; printf(“Input # to end “); printf(“Please input Node_data:“); scanf(“%s“,ch); return head; /返回头指针 /=用头插入法建立带头结点的单链表= LinkList CreatList(void) char ch100; LinkList head,p; head=(LinkList)malloc(sizeof(ListNode); head-next=NULL; while(1) printf(“Input # to end “); printf(“Please input Node_data:“); scanf(“%s“,ch); if(strcmp(ch,“#“) if(LocateNode(head,ch)=NULL) strcpy(head-data,ch); p=(LinkList)malloc(sizeof(ListNode); p-next=head; head=p; else break; return head; /=按值查找结点,找到则返回该结点的位置,否则返回 NULL= ListNode *LocateNode(LinkList head, char *key) ListNode *p=head-next; /从开始结点比较 while(p!=NULL /扫描下一个结点 return p; /若 p=NULL 则查找失败,否则 p 指向找到的值为 key 的结点 /=修改程序:增加节点= ListNode * AddNode(LinkList head) char ch10; ListNode *s,*pp; printf(“nPlease input a New Node_data:“); scanf(“%s“,ch); /输入各结点的字符串 pp=LocateNode(head,ch); /按值查找结点,返回结点指针 printf(“ok2n“); if(pp=NULL) /没有重复的字符串,插入到链表中 s=(ListNode *)malloc(sizeof(ListNode); strcpy(s-data,ch); printf(“ok3n“); s-next=head-next; head-next=s; return head; /=删除带头结点的单链表中的指定结点= void DeleteList(LinkList head,char *key) ListNode *p,*r,*q=head; p=LocateNode(head,key); /按 key 值查找结点的 if(p=NULL ) /若没有找到结点,退出 printf(“position error“); exit(0); while(q-next!=p) /p 为要删除的结点,q 为 p 的前结点 q=q-next; r=q-next; q-next=r-next; free(r); /释放结点 /=打印链表= void printlist(LinkList head) ListNode *p=head-next; /从开始结点打印 while(p) printf(“%s, “,p-data); p=p-next; printf(“n“); /=删除所有结点,释放空间= void DeleteAll(LinkList head) ListNode *p=head,*r; while(p-next) r=p-next; free(p); p=r; free(p); 三实验结果: Input # to end Please input Node_data:bat Input # to end Please input Node_data:cat Input # to end Please input Node_data:eat Input # to end Please input Node_data:fat Input # to end Please input Node_data:hat Input # to end Please input Node_data:jat Input # to end Please input Node_data:lat Input # to end Please input Node_data:mat Input # to end Please input Node_data:# mat, lat, jat, hat, fat, eat, cat, bat, Delete node (y/n):y Please input Delete_data:hat mat, lat, jat, fat, eat, cat, bat, Insert node (y/n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建龙岩农业发展有限公司所属企业招聘1人模拟试卷及一套完整答案详解
- 前台上半年工作总结范文
- 2025年橡胶、橡塑制品项目建议书
- 2025河南洛阳市洛宁县招聘看护队伍劳务派遣人员45名模拟试卷及答案详解(各地真题)
- 2025金华兰溪市市属国企招聘32人考前自测高频考点模拟试题附答案详解(黄金题型)
- 管理骨干股权激励协议范本6篇
- 2025广西玉林北流市中医医院公开招聘21人模拟试卷及答案详解一套
- 2025年生物农药及微生物农药合作协议书
- 2025福建福州经济技术开发区机关事务服务中心招聘编外聘用人员1人模拟试卷完整答案详解
- 2025福建三明市城市建设发展集团有限公司公开招聘工作人员18人的考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025成人高考政治2024真题及答案
- 食品厂消防安全培训课件
- 2025年Adobe中国认证设计师考试设计规范试题及答案
- 2025年金融科技行业全球市场发展趋势研究报告
- 管理咨询项目考核方案
- 保洁日常清洁标准课件
- 乡镇财政监管培训课件
- 1.2细胞的多样性和统一性(1)课件-高一上学期生物人教版必修1
- Unit 1~2单元月考测试(含答案) 2025-2026学年译林版(2024)八年级英语上册
- 工程预算审核服务方案(3篇)
- 2025-2026学年七年级英语上学期第一次月考 (上海专用)原卷
评论
0/150
提交评论