- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一.无空间限制带头结点单链表结构体
1.宏定义:
#includestdio.h
#includestdlib.h
#define OVERFLOW -2
#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
#define ElemType ****;
2.结构体:
2. 无空间限制单链表结构体:
typedef struct Node
{
ElemType data;
struct Node *next;
}Node,*Linklist;
3.基本函数:
int Initlist_Linklist_1(Linklist L)
/*初始化单链表:1.先决条件:定义一个全局尾指针变量;2.函数作用:初始化链表。*/
{
L-next=NULL;
tail=L;
printf(单链表现初始化了!\n);
return OK;
}
int Initlist_Linklist_2(Linklist L)
/*初始化单链表:1.先决条件:初始化结构体数据即L-next=NULL(一次)或执行一次
Initlist_Linklist_1,定义一个全局尾指针变量;2.函数作用:删除已有链表,并初始化单链表*/
{
Node *p,*q;
if(p=L-next)
{
while(p)
{
q=p-next;
free(p);
p=q;
}
}
L-next=NULL;
tail=L;
printf(单链表现初始化了!\n);
return OK;
}
int Increase_Linklist(Linklist L)
/*尾接法增加数据:1.先决条件:先按初始化函数初始化,定义一个全局尾指针变量;
2.函数作用:为单链表L增加数据,以标识符“0”结束*/
{
int panduan;
ElemType e;
Node *p;
printf(输入0结束增加数据!\n);
do
{
printf(请输入数据:);
scanf(%d,e);//因ElemType不同而不同,特别是字符类型
getchar();
if(e==0)//因ElemType不同而不同,特别是字符类型
{
printf(再次输入0表示结束增加数据,输入非零将把0增加到数据中.\n);
printf(请输入:);
scanf(%d,panduan);
getchar();
if(panduan==0)
{
printf(正常结束增加数据!\n);
return OK;
}
}
p=(Node *)malloc(sizeof(Node));
if(p==NULL)
{
printf(申请空间失败,请稍后再试!\n);
return OVERFLOW;
}
tail-next=p;
tail=p;
tail-data=e;
tail-next=NULL;
e++;
}while(e!=0);//因ElemType不同而不同,特别是字符类型
printf(正常结束增加数据!\n);
return OK;
}
int Input_Linklist(Linklist L)
/*遍历输出函数:1.先决条件:先决条件:先按初始化函数初始化,
使链表为带头结点;2.函数作用:输出单链表中各个数据*/
{
Node *p;
int count=0;
for(p=L-next;p!=NULL;p=p-next)
{
printf(%d ,p-data);//会因ElemType不同而不同
count++;
if(count%10==0)
printf(\n);
}
printf(\n);
return OK;
}
int Delete_Linklist_1(Linklist L)
/*删除函数:1.先决条件:初始化单链表或初始化结构体数据即L-next=NULL,
单链表以值(要求为数,不能是字符)排列,定义一个全局尾指针变量;
2.函数作用:删除表中所不大于maxk且不小于mink的元素。*/
{
ElemType mink,maxk;
Node *o,*p,*q;
int count=0;
printf(删除表中所不大于maxk且不小于mink的元素。\n);
printf(请输入mink和maxk值:\n);
scanf(%d%d,m
您可能关注的文档
最近下载
- 社会组织会费票据管理制度(范本).pdf VIP
- 代理记账业务内部管理规范制度范本.docx(核实添加无关内容) VIP
- 《公路沥青路面施工技术规范》(F40-2004 )【可编辑】.docx VIP
- 光的人眼非视觉生物效应作用剂量 编制说明.pdf
- 多准:天猫啤酒2022年趋势报告.pdf VIP
- 2025年高考政治复习知识清单必修一《中国特色社会主义》【答题模板】.pdf VIP
- 苏S01-2012给水排水图集(无水印).docx VIP
- 制瓶机供料机.doc VIP
- 加油站防汛应急预案.docx VIP
- 泌尿外科利用PDCA循环降低持续膀胱冲洗患者膀胱痉挛的发生率品管圈.pptx VIP
文档评论(0)