- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单链表的建立、删除、及建立递增的单链表
班级: 数学112班 学号:201112010222姓名: 吕文辉 报告日期: 2012/12/9
试验一:单链表
一、实验目的
(1)掌握单链表的存储结构形式及其描述。
(2)掌握单链表的建立、查找、插入和删除操作。
二、实验要求
(1)编写函数,实现随机产生或键盘输入一组元素,建立一个带头结点的单链表(无序)。
(2)编写函数,实现遍历单链表。
编写函数,实现把单向链表中元素逆置(不允许申请新的结点空间)。
编写函数,建立一个非递减有序单链表。
编写函数,利用以上算法,建立两个非递减有序单链表,然后合并成一个非递减链表。
编写函数,在非递减有序单链表中插入一个元素使链表仍然有序。
编写函数,实现在非递减有序链表中删除值为x的结点。
(8)编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。
三、实验代码:
#include iostream.h
#includestdio.h
#includestdlib.h
///////////////////////////////////////////
typedef char elemtype;
#define null 0
const int n=20;
int i=1;
typedef
struct node
{elemtype data;
struct node *p;
}node,*linklist;
///////////////////////////
void initlist(linklist L);//初始化单链表
void createfromhead(linklist L); //利用头插法建立单链表;
void textlinklist(linklist L); // 检测单链表;
void createfromtail(linklist L);//尾插法建立单链表;
void linklistnizhi(linklist k);//单链表的逆置;
void Lorder(elemtype a[n],int n);//给数组中元素排序;
void increaselinklist(linklist k); //给单链表中的元素排序;
linklist unittwolinklist(linklist k1,linklist k2); // 建立两个非递减有序单链表,然后合并成一个非递减链表。
void DeleteIncreaselinklist(linklist k); //编写函数,实现在非递减有序链表中删除值为x的结点
void Insertelemtypelinklist(linklist k); //编写函数,在非递减有序单链表中插入一个元素使链表仍然有序
void alllinklistfunctionlwh(char s); //将所有函数的整合在一个函数里面;
void textlwhplinklist(linklist lwhp);
///////////////////////////////
int main()
{
cout************************endl;
cout头插法建立程序的眼演示实例endl当输入符号的时候就默认(单链表的字符已经输完)退出endl;
cout************************endl;
char s;
cout如果执行程序请输入Lendl;
cins;
alllinklistfunctionlwh(s);
////////////////////////////////////////////////
//调试程序时要用到的代码;
/* node lwh;
linklist lwhp;
lwhp=lwh;
initlist(lwhp);
coutsizeof(node) sizeof(node)endl;
coutsizeof(lwhp)sizeof(lwhp)endlsizeof(char)sizeof(char)endl;
cout第一个为表头指针,不放数据,由于用的头插法,故输出链表的顺序和输入的顺序恰好相反endl;
createfromhead(lwhp);
createfromtail(lwhp);
linklistnizhi(lwhp); 1逆置单链表;
increaselinklist(lwhp); //给单链表中的元素排序;
//建立另外一个单链表;
node lwh1;
linklist lwhp1;
lwhp1=lwh1;
initlist(l
文档评论(0)