教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 资料大全 >

数据结构实验指导书——单链表的基本操作

来源:网络收集 时间:2026-04-25
导读: 实验02单链表的基本操作 实验学时:2学时 实验类型:上机 背景知识:单链表的插入、删除及应用。 目的要求: 1.掌握单链表的存储特点及其实现。 2.掌握单链表的插入、删除算法及其应用算法的程序实现。 实验内容: 编写一个完整的程序,实现单链表的生成、

实验02单链表的基本操作

实验学时:2学时

实验类型:上机

背景知识:单链表的插入、删除及应用。

目的要求:

1.掌握单链表的存储特点及其实现。

2.掌握单链表的插入、删除算法及其应用算法的程序实现。

实验内容:

编写一个完整的程序,实现单链表的生成、插入、删除、输出等基本操作。

(1)随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。

(2)计算单链表的长度,遍历单链表。

(3)把单链表中的元素逆置(不允许申请新的结点空间)。

(4)在单链表中删除所有值为偶数的元素结点。

(5)编写在非递减有序单链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单链表。

(6)* 利用算法5建立两个非递减有序单链表,然后合并成一个非递增有序链表。

(7)* 利用算法5建立两个非递减有序单链表,然后合并成一个非递减有序链表。

(8)* 利用算法1建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。

(9)*采用单链表实现一元多项式的存储并实现两个多项式相加并输出结果。

(10)在主函数中设计一个简单的菜单,分别调试上述算法。

(11)*综合训练:

1)利用链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等,并能够实现将数据存储到文件中)

2)约瑟夫环问题:设有n个人围坐在圆桌周围,从某个位置开始编号为1,2,3,…,n,坐在编号为1的位置上的人从1开始报数,数到m的人便出列;下一个(第m+1个)人又从1开始报数,数到m的人便是第二个出列的人;如此重复下去,直到最后一个人出列为止,得到一个出列的编号顺序。例如,当n=8,m=4时,若从第一个位置数起,则出列的次序为4,8,5,2,1,3,7,6。试编写程序确定出列的顺序。要求用不带头结点的单向循环链表作为存储结构模拟此过程,按照出列顺序打印出个人编号。

实验说明:

1.类型定义

typedefintElemType; //元素类型

typedefstructnode

{

ElemType data;

structnode *next;

}LinkNode, *LinkList;

2.为了算法实现简单,建议采用带头结点的单链表。

注意问题:

1.重点理解链式存储的特点及指针的含义。

2.注意比较顺序存储与链式存储的各自特点。

3.注意比较带头结点、无头结点链表实现插入、删除算法时的区别。

4.单链表的操作是数据结构的基础,一定要注意对这部分常见算法的理解。

部分源代码:

DS.h

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

typedefint Status;

LinkList.h

#include "DS.h"

typedefintElemtype;

typedefstruct Node

{

Elemtype data;

struct Node *next;

}Lnode,*LinkList;

void menu(); /*菜单*/

Status Init_Linklist(LinkList&L); /*初始化空表*/

Status Creat_Linklist(LinkList&L);/*尾插法建立单链表*/

void Disp_Linklist(LinkList L);/*单链表遍历*/

intlength_Linklist(LinkList L);/*计算单链表长度*/

void Reverse_Linklist(LinkList L);/*单链表逆置*/

void DelEven_Linklist(LinkList L);/*删除值为偶数的结点*/

Status Insert_Linklist(LinkList L, int x);/*在有序单链表L中插入元素x,链表仍然有序*/

Status CreatOrder_Linklist(LinkList&L);/*创建非递减有序单链表*/

void MergeDescend_Linklist(LinkList La, LinkListLb, LinkList&Lc);/*两个非递减有序单链表La和Lb合并成一个非递增有序链表Lc*/

void MergeAscend_Linklist(LinkList La, LinkListLb, LinkList&Lc); /*两个非递减有序单链表La和Lb合并成一个非递减有序链表Lc*/

void Split_Linklist(LinkList La, LinkList&Lb);/*链表La按值分解成两个链表,La全部为奇数,Lb全部为偶数*/

LinkList.cpp

#include "LinkList.h"

void menu()

{

printf("\t\t\t 单链表基本操作\n\n");

printf("\t\t\t1.建立单链表\n");

printf("\t\t\t2.遍历单链表\n");

printf("\t\t\t3.计算链表长度\n");

printf("\t\t\t4.链表逆置\n");

printf("\t\t\t5.删除偶数节点\n");

printf("\t\t\t6.生成值有序单链表\n");

printf("\t\t\t7.合并生成降序链表\n");

printf("\t\t\t8.合并生成升序链表\n");

printf("\t\t\t9.分解链表\n");

printf("\t\t\t0.退出\n\n");

}

/*初始化空表*/

Status Init_Linklist(LinkList&L)

{

}

/*尾插法建立单链表*/

Status Creat_Linklist(LinkList&L)

{

}

/*单链表遍历*/

void Disp_Linklist(LinkList L)

{

}

/*计算单链表长度*/

intlength_Linklist(LinkList L)

{

}

/*单链表逆置*/

void Reverse_Linklist(LinkList L)

{

}

/*删除值为偶数的结点*/

void DelEven_Linklist(LinkList L)

{

}

/*在有序单链表中插入元素,链表仍然有序*/

Status Insert_Linklist(LinkList L, int x)

{

LinkList p, q, s;

}

/*创建非递减有序单链表*/

Status CreatOrder_Linklist(LinkList&L)

{

}

/*两个非递减有序单链表La和Lb合并成一个非递增有序链表Lc*/ void MergeDescend_Linklist(LinkList La, LinkListLb, LinkList&Lc) {

}

/*两个非递减有序单链表La和Lb合并成一个非递减有序链表Lc*/ void MergeAscend_Linklist(LinkList La, LinkListLb, LinkList&Lc) {

}

/*链表La按值分解成两个链表,La全部为奇数,Lb全部为偶数*/ void Split_Linklist(LinkList La, LinkList&Lb)

{

}

main.cpp

#include "LinkList.h"

int main()

{

int choice, length;

LinkList L, La, Lb, Lc;

while(1)

{

menu();

printf("选择你的操作:");

scanf("%d",&choice);

switch(choice)

{

case 1:

if(Creat_Linklist(L))

printf("单链表创建成功\n");

else

printf("单链表创建失败\n");

break;

case 2:

Disp_Linklist(L);

break;

case 3:

length = length_Linklist(L);

printf("单链表长度为:%d\n",length);

break;

case 4:

Reverse_Linklist(L);

printf("逆置后的链表为:\n");

Disp_Linklist(L);

break;

ca …… 此处隐藏:2241字,全部文档内容请下载后查看。喜欢就下载吧 ……

数据结构实验指导书——单链表的基本操作.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/2193509.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)