单链表完整C语言纯代码.docx

上传人:b****8 文档编号:11957794 上传时间:2023-06-03 格式:DOCX 页数:9 大小:49.22KB
下载 相关 举报
单链表完整C语言纯代码.docx_第1页
第1页 / 共9页
单链表完整C语言纯代码.docx_第2页
第2页 / 共9页
单链表完整C语言纯代码.docx_第3页
第3页 / 共9页
单链表完整C语言纯代码.docx_第4页
第4页 / 共9页
单链表完整C语言纯代码.docx_第5页
第5页 / 共9页
单链表完整C语言纯代码.docx_第6页
第6页 / 共9页
单链表完整C语言纯代码.docx_第7页
第7页 / 共9页
单链表完整C语言纯代码.docx_第8页
第8页 / 共9页
单链表完整C语言纯代码.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单链表完整C语言纯代码.docx

《单链表完整C语言纯代码.docx》由会员分享,可在线阅读,更多相关《单链表完整C语言纯代码.docx(9页珍藏版)》请在冰点文库上搜索。

单链表完整C语言纯代码.docx

单链表完整C语言纯代码

单链表完整C语言纯代码

voidinit(structnode**h)

{

structnode*s;

s=(structnode*)malloc(sizeof(structnode));

if(s==NULL)return;

/*

头结点的数据域存储链表的长度

*/

s->data=0;

s->next=NULL;

/*让头指针指向头结点*/

*h=s;

}

/*

创建链表,仍然按照逆序创建,

从后往前输入元素的值,

然后把新结点插入到表头

*/

voidcreateLink(structnode*h)

{

structnode*s;

intn;

while

(1)

{

scanf("%d",&n);

/*根据实际情况判断链表的元素

输入结束

还有一种情况就是找不到合适的

作为结束标记的值

先让用户输入元素个数,

然后固定字数循环*/

if(n==-1)break;

/*

创建新结点

*/

s=(structnode*)malloc(sizeof(structnode));

s->data=n;

s->next=h->next;

/*

新结点放入链表的表头

让头结点的NEXT指向新结点

*/

h->next=s;

(h->data)++;

}

}

/*

遍历整个链表

*/

voidbianliLink(structnode*h)

{

intk;

structnode*p;

/*

P指向第一个结点

*/

p=h->next;

/*

如果定义了链表长度变量,

可以使用变量计数,

表示处理到链表的最后一个元素

如果不定义链表长度变量,

就用指针是否指向NULL,

判断是否处理到最后一个元素了

*/

/*1.链表长度变量计数*/

k=0;

while(kdata)

{

/*对元素进行处理

这里可以根据需求变更*/

printf("%d",p->data);

/*准备处理下一个节点*/

p=p->next;

k++;

}

/*2.

用指针判断是否处理到链表的

最后一个元素了

*/

printf("\n");

p=h->next;

while(p!

=NULL)

{

/*处理当前节点*/

printf("%d",p->data);

/*准备处理下一个节点*/

p=p->next;

}

printf("\n");

}

/*

intnum:

要插入的结点元素的值

index:

插入位置:

index从1开始编号,

要在Index指定的位置插入数据

*/

voidinsertLink(structnode*h,intnum,intindex)

{

structnode*p,*s;

intk=1;

/*插入位置无效,链表长度现在是10,在12(包含12)之后的位置插入元素,认为地址无效*/

if(index<=0||index>(h->data+1))return;

s=(structnode*)malloc(sizeof(structnode));

if(s==NULL)return;

s->data=num;

/*

让指针p指向头结点

*/

p=h;

/*

让指针p移动到待插入位置的前驱结点

*/

while(k

{

p=p->next;

k++;

}

s->next=p->next;

p->next=s;

h->data++;

}

/*

index:

删除位置:

index从1开始编号,

要删除index所指的位置的元素

*/

voiddeleteLink(structnode*h,intindex)

{

structnode*p,*s;

intk=1;

if(index<=0||index>h->data)return;

/*

让指针p指向头结点

*/

p=h;

/*让指针p移动到待删除节点的前驱*/

while(k

{

p=p->next;

k++;

}

p->next=p->next->next;

/*链表删除有可能让你返回删除的节点的值*/

h->data--;

}

/*

insertLink(header,10,1);

bianliLink(header);

insertLink(header,11,header->data+1);

bianliLink(header);

insertLink(header,13,4);

bianliLink(header);

deleteLink(header,1);

bianliLink(header);

deleteLink(header,header->data);

bianliLink(header);

deleteLink(header,3);

bianliLink(header);

printf("%d,%d,%d\n",getLink(header,0),getLink(header,header->data),getLink(header,3));

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2