西华大学数学与计算机学院计算机系学生实验报告
数学与计算机学院计算机系实验报告
课程名称: 数据结构 指导教师: 黄襄念 实验名称:单链表的建立/查找/插入/删除 实验序号:实验 1 年级:2010 姓名: 学号: 实验时间:8:00—11:40 实验成绩: 实验教室:6A-413 实验日期:2012/6/10 实验学时:4
一、实验目的 熟悉的掌握链表的创建,和链表中结点查找、插入、删除。 二、实验环境 1. 操作系统:Windows7 2. 开发软件:Microsoft Visual C++ 6.0 三、实验内容 程序功能 本程序完成了以下功能: 1. 创建链表 2. 删除结点 3. 插入结点 数据结构 本程序中使用的数据结构 1. 它的优缺点 1) 能将物理地址散乱的链接在一起,更好的利用磁盘空间。 2) 能快速的添加结点和删除结点。 2. 逻辑结构图
开始
菜单
创 建 链 表
插 入 结 点
删 除 结 点
查 找 结 点
结束
第1 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
3. 存储结构图 Head
Num a[] Next
P
Num a[] Next
、、、、、、
4. 存储结构的 C/C++ 语言描述 struct LINK { int num; char a[20]; struct LINK *next; }; 算法描述 本程序中采用的算法 1. 算法名称:创建链表 2. 算法原理或思想 是通过申请一个结构体指针,再通过结构体指针申请一个结点空间,录入数据后用 前一个结点的 Next 指针将新增加的结点与前面的结点链接,一次这样操作,就成 了一个链表 3. 算法特点 它能随意的添加结点,你需要多少就添加多少,不会浪费多余的空间,也不用提前 去预测需要多少空间。 程序说明 1. 系统流程图
Create(head) deleted(head) Main Menu find(head) add(head) 结 束
2. 程序模块(类或函数)代码:包括注释说明、模块功能、I/O 参数等 1)创建链表模块:将链表创建录入数据。 代码:void create(LINK *head) { LINK *p,*q; int i; p=head; q=p; while(1) { p=new LINK(); cout>p->num; cout
第2 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
cin>>p->a; cout>i; q->next=p; q=p; if(i==0) { p->next=NULL; coutnext; q=head; cout>i; coutnum==i) { q->next=p->next; break; } q=p; p=p->next; } if(p==NULL) { coutnext; q=head; cout>i;
} 3)
第3 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
while(p!=NULL) { if(p->num==i) { coutnumanext; } if(p==NULL) { coutnext; q=new LINK(); cout>q->num; cout>q->a; head->next=q; q->next=p; cout
第4 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
运行结果图 2
五、实验总结 1. 结果分析:本程序完成了链表的创建和插入、删除、查找功能;但是还是存在不完善 的地方,没有对数据进行排序,没有实现全体数据的输出功能。 2. 心得体会:通过这个实验我更熟练的掌握了链表、指针,觉得数据结构是一个很不错 的一门课程。
第5 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
代码:#include using namespace std; struct LINK { int num; char a[20]; struct LINK *next; };
void menu() { cout>p->num; cout>p->a; cout>i; q->next=p; q=p; if(i==0) { p->next=NULL; cout
第6 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
void deleted(LINK *head) { LINK *p,*q; int i; p=head->next; q=head; cout>i; coutnum==i) { q->next=p->next; break; } q=p; p=p->next; } if(p==NULL) { coutnext; q=head; cout>i; while(p!=NULL) { if(p->num==i) { coutnumanext; } if(p==NULL) { cout
第7 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
} } void add(LINK *head) { LINK *p,*q; p=head->next; q=new LINK(); cout>q->num; cout>q->a; head->next=q; q->next=p; cout
void main() { LINK *head; head=new LINK(); int i; menu(); while(1) { cout>i; switch(i) { case 1:create(head);break; case 2:add(head);break; case 3:deleted(head);break; case 4:find(head);break; case 0:exit(0); } } }
第8 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
数学与计算机学院计算机系实验报告
课程名称: 数据结构 指导教师: 黄襄念 实验名称:单链表的建立/查找/插入/删除 实验序号:实验 1 年级:2010 姓名: 学号: 实验时间:8:00—11:40 实验成绩: 实验教室:6A-413 实验日期:2012/6/10 实验学时:4
一、实验目的 熟悉的掌握链表的创建,和链表中结点查找、插入、删除。 二、实验环境 1. 操作系统:Windows7 2. 开发软件:Microsoft Visual C++ 6.0 三、实验内容 程序功能 本程序完成了以下功能: 1. 创建链表 2. 删除结点 3. 插入结点 数据结构 本程序中使用的数据结构 1. 它的优缺点 1) 能将物理地址散乱的链接在一起,更好的利用磁盘空间。 2) 能快速的添加结点和删除结点。 2. 逻辑结构图
开始
菜单
创 建 链 表
插 入 结 点
删 除 结 点
查 找 结 点
结束
第1 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
3. 存储结构图 Head
Num a[] Next
P
Num a[] Next
、、、、、、
4. 存储结构的 C/C++ 语言描述 struct LINK { int num; char a[20]; struct LINK *next; }; 算法描述 本程序中采用的算法 1. 算法名称:创建链表 2. 算法原理或思想 是通过申请一个结构体指针,再通过结构体指针申请一个结点空间,录入数据后用 前一个结点的 Next 指针将新增加的结点与前面的结点链接,一次这样操作,就成 了一个链表 3. 算法特点 它能随意的添加结点,你需要多少就添加多少,不会浪费多余的空间,也不用提前 去预测需要多少空间。 程序说明 1. 系统流程图
Create(head) deleted(head) Main Menu find(head) add(head) 结 束
2. 程序模块(类或函数)代码:包括注释说明、模块功能、I/O 参数等 1)创建链表模块:将链表创建录入数据。 代码:void create(LINK *head) { LINK *p,*q; int i; p=head; q=p; while(1) { p=new LINK(); cout>p->num; cout
第2 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
cin>>p->a; cout>i; q->next=p; q=p; if(i==0) { p->next=NULL; coutnext; q=head; cout>i; coutnum==i) { q->next=p->next; break; } q=p; p=p->next; } if(p==NULL) { coutnext; q=head; cout>i;
} 3)
第3 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
while(p!=NULL) { if(p->num==i) { coutnumanext; } if(p==NULL) { coutnext; q=new LINK(); cout>q->num; cout>q->a; head->next=q; q->next=p; cout
第4 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
运行结果图 2
五、实验总结 1. 结果分析:本程序完成了链表的创建和插入、删除、查找功能;但是还是存在不完善 的地方,没有对数据进行排序,没有实现全体数据的输出功能。 2. 心得体会:通过这个实验我更熟练的掌握了链表、指针,觉得数据结构是一个很不错 的一门课程。
第5 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
代码:#include using namespace std; struct LINK { int num; char a[20]; struct LINK *next; };
void menu() { cout>p->num; cout>p->a; cout>i; q->next=p; q=p; if(i==0) { p->next=NULL; cout
第6 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
void deleted(LINK *head) { LINK *p,*q; int i; p=head->next; q=head; cout>i; coutnum==i) { q->next=p->next; break; } q=p; p=p->next; } if(p==NULL) { coutnext; q=head; cout>i; while(p!=NULL) { if(p->num==i) { coutnumanext; } if(p==NULL) { cout
第7 页 共8 页
西华大学数学与计算机学院计算机系学生实验报告
} } void add(LINK *head) { LINK *p,*q; p=head->next; q=new LINK(); cout>q->num; cout>q->a; head->next=q; q->next=p; cout
void main() { LINK *head; head=new LINK(); int i; menu(); while(1) { cout>i; switch(i) { case 1:create(head);break; case 2:add(head);break; case 3:deleted(head);break; case 4:find(head);break; case 0:exit(0); } } }
第8 页 共8 页