实验一 链表

实验目的和要求
1.理解线性表的链式存储结构。
2.熟练掌握动态链表结构及有关算法的设计。
根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关 算法。

实验任务
1. 对任意输入的一组数据,建立一个递增有序的单链表。
2. 将单链表L中的奇数项和偶数项结点分解开,并分别连成一个单链表。
3. 用递增有序的链表A、B表示两个集合,判断B是否是A的子集。
4. 用递增有序的链表A、B表示两个集合,设计算法求它们的并集。
5. 设计算法判断单循环链表是否每个结点的值都是偶数。

实验内容
1实验用仪器,设备
Visual Stidio2019
2实验内容与步骤
实验代码:
1.

 #include <iostream>
using namespace std;
typedef int elementtype;
enum errorcode { success, overflow, underflow, rangeerror };typedef struct LinkNode {elementtype data;struct LinkNode* next;
}node;class list {public:list();~list();bool empty();errorcode insert(const int i);errorcode print();
private:int count;node* head;
};list::list() {count = 0;head = new node;head->next = NULL;
}list::~list() {}bool list::empty() {if (count == 0) return true;else return false;
}errorcode list::insert(const int i) {node* p;p = head;node* s = new node;if (empty()) {s->data = i;s->next = head->next;head->next = s;count++;}else {while (p->data < i && p->next != NULL) {if (p->next->data > i) break;else p = p->next;}s->next = p->next;p->next = s;s->data = i;count++;}return success;
}errorcode list::print() {node* p = head;while (p->next != NULL) {cout << p->next->data<<" ";p = p->next;}if (p->next == NULL) cout << endl;return success;
}int main() {int x=0;list chain;while(x!=1000) {cin >> x;if(x!=1000)chain.insert(x);}chain.print();return 0;
}
int main() {int x;list chain;list odd;    //奇数链表list even;   //偶数链表for (int j = 0;j < maxtin;j++) {cin >> x;chain.insert(x);if (x % 2 == 0) even.insert(x);if (x % 2 != 0) odd.insert(x);}cout << "奇数链表:";odd.print();cout << "偶数链表:";even.print();return 0;
}
elementtype list::get_top(elementtype x) {node* s = new node;if (empty()) return underflow;s = head->next;x = s->data;count--;head->next = s->next;return x;
}bool list::compare(list m, list n) {elementtype x1 = 0;elementtype x2 = 0;int judge=0;x1=m.get_top(x1);x2=n.get_top(x2);if (m.count < n.count)judge=0;else {while (n.count > 0 && m.count > 0) {if (x1 == x2) {x1=m.get_top(x1);x2=n.get_top(x2);judge = 1; };if (x1 > x2) { judge = 0;break; }if (x1 < x2) {x1=m.get_top(x1);judge = 1;}}}if (judge == 1) return true;else return false;
}
void merge_list(list A,list B, list C){int ia = 1;int ib = 1;int counta, countb;counta = A.get_count();countb = B.get_count();elementtype x, y;while (ia <= counta && ib <= countb) {A.get_element(ia, x);B.get_element(ib, y);if (x == y) {C.insert(x); ia++; ib++;}if (x < y) {C.insert(y); ib++;}if(x > y) { C.insert(x); ia++; }}while (ia <= counta) {int j = C.get_head();if (x == j) ia++;else {C.insert(x); ia++; A.get_element(ia, x);}}while (ib <= countb) { int j = C.get_head();if (y == j) ib++;else { C.insert(y); ib++; B.get_element(ib, y); }}C.print();
}
elementtype list::is_even() {node* s = new node;s = head;elementtype j = 0;while (s->next != head) {if (s->next->data % 2 == 0) j = 1;else if (s->next->data % 2 != 0) {j = 0;break;}s = s->next;}if (s->next == head) {if (s->data % 2 == 0) j = 1;else j = 0;}return j;
}

感想、体会、建议
1.构造单链表时要注意相关节点结构的构造,链表为空时插入新节点时要 注意头节点与新节点的关系;要注意设置结束插入新数据的符号;
2.输入元素时要注意链表是否已满;
3.注意get_top是否改变了x的值,是值传递还是引用,若是值传递要注意 及时改变相关值;
4.求并集时需要注意构造链表时采用的是尾插法还是头插法;
5.注意判断的条件,最后一个结点的判断。

数据结构与算法实验报告——实验一 链表相关推荐

  1. 数据结构与算法 第二次实验报告堆栈队列

          数据结构与算法 第二次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1 中国石油大学(北京)计算机科学与技术系 前     言 <数据结构>是计算机及相关 ...

  2. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

  3. 北京理工大学计算机实验四报告表,北京理工大学数据结构实验报告实验四

    北京理工大学数据结构实验报告实验四 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 <数据结构与算法设计>实验报告--实 ...

  4. c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组

    湖北理工学院14本科C语言实验报告实验四 数组.doc 实验四 数 组实验课程名C语言程序设计专业班级 14电气工程2班 学号 201440210237 姓名 熊帆 实验时间 5.12-5.26 实验 ...

  5. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc

    <C语言程序设计>实验报告(实验1-12).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会 ...

  6. c语言程序设计植树,C语言程序设计实验报告——实验

    C语言程序设计实验报告--实验 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  7. Java程序设计实验报告 实验名称:循环和数组

    Java程序设计实验报告 实验名称:循环和数组 学号: 姓名:大聪TI学员 实验日期:2018年5月30日星期三 一.实验目的: 1. 遵循循环设计策略来开发循环,使用标记值控制循环. 2. 使用fo ...

  8. 计算机图学实验报告,计算机图形学实验报告实验1

    计算机图形学实验报告实验1 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学实验报告学院:计算机科学与信息专业:计科班级:101 ...

  9. 离散数学实验报告 实验3 欧拉路的确定

    离散数学实验报告 实验3 欧拉路的确定 一.实验目的 理解欧拉图的概念,掌握欧拉通/回路的判定方法. 二.实验内容 输入一个无向简单图的邻接矩阵,判定该图是否含有欧拉通/回路.若有,请给出一条欧拉通/ ...

  10. 计算机仿真技术应用报告,计算机仿真技术实验报告-实验二

    计算机仿真技术实验报告-实验二 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <仿真技术与应用>实验报告计算机仿真技术实验 ...

最新文章

  1. 新概念英语(1-9)How is Ema?
  2. spring MVC - Inteceptors(拦截器)
  3. leetcode-344-反转字符串
  4. socket 多线程安全、粘包问题
  5. nginx 上传 文件超时设置_Nginx在高并发下的性能优化点!有这篇就够了!
  6. oracle change schema,使用pt-online-schema-change修改主键时注意
  7. MySql 5.7 json数据格式 增删改查 操作 (不定时更新)
  8. java8与hibernate_Hibernate 使用java8 LocalDateTime 注意事项
  9. 价值50个亿的10句话
  10. 使用自定义函数替代Linux rm命令
  11. Visual Leak Detector 2.2.3 Visual C++内存检测工具
  12. Oracle oci.dll下载地址
  13. linux展示文件最尾部内容 最新,LINUX tailf命令-显示文件的末尾若干行内容
  14. 【离散数学】陪集的详解
  15. 冰冻三尺,非一日之寒。数据解析——xpath(1)
  16. vue el-table表格计算小计
  17. 调查报告:创意行业是否为远程办公做好准备?
  18. Sonarqube代码审查平台
  19. Windows打印机驱动删除不了,怎么办?
  20. 超详细的实现上传文件功能教程,文件上传实现。

热门文章

  1. alsa 音频编程简单的例子 (总结)
  2. 黑客入侵微软邮件服务器、Windows零日漏洞可获管理员权限|11月23日全球网络安全热点
  3. 编写函数判断一个数是否为素数
  4. Android Studio TV开发教程(十二)帮助用户在电视上找到您的内容
  5. 基于Android13的系统启动流程分析(六)之SystemServer内部逻辑分析
  6. 炫过Win7 openSUSE最新中文版完美体验
  7. python 实现ssh爆破
  8. 使你的ActiveX控件执行时不弹出安全性提示
  9. How to fix the global rice crisis 如何应对全球稻米危机 | 经济学人20230401版双语精翻
  10. 鲜花绿植学生网页设计模板 静态HTML鲜花学生网页作业成品 DIV CSS网上鲜花植物主题静态网页