栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

对带头结点的单链表和不带头结点的单链表操作的区别

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对带头结点的单链表和不带头结点的单链表操作的区别

用c语言实现对带有头节点和不带头结点的单链表进行建立、插入和删除的操作

#include
#include

typedef struct lnode{
int data;
struct lnode *next;
}Lnode,*linklist;

main(){
linklist L1,L2,p,q;
int e,i,j,e1,e2;
L1=(linklist)malloc(sizeof(Lnode));
L1->next=NULL;//建立带有头结点的空链表
L2=NULL;//建立不带头结点的空链表

p=L1;//给带头节点的单链表赋5个初始元素数据
for(i=0;i<5;i++){
    q=(linklist)malloc(sizeof(Lnode));
    q->data=i+1;
	q->next=NULL;
	p->next=q;
	p=p->next;
}

i=1;
e=10;//在带有头结点的单链表的第i个位置插入一个为e的新节点
p=L1;
j=0;
while(p&&jnext;j++;}//找到第i-1个节点
if(p!=NULL&&j>i-1)printf("ERROR!");
q=(linklist)malloc(sizeof(Lnode));
q->data=e;
q->next=p->next;
p->next=q;

printf("L1:");//输出进行插入操作后的单链表L1
p=L1->next;
while(p){printf("%d,",p->data);p=p->next;}

q=(linklist)malloc(sizeof(Lnode));//给不带头节点的单链表赋5个初始元素数据
q->data=1;
q->next=NULL;
L2=q;
p=L2;
for(i=1;i<5;i++){
q=(linklist)malloc(sizeof(Lnode));
q->data=i+1;
q->next=NULL;
p->next=q;
p=p->next;}

i=1;
e=10;
if(i==1) {
q=(linklist)malloc(sizeof(Lnode));
q->data=e;
q->next=L2;
L2=q; }//在不带头结点的单链表的第一个位置的插入
else {
j=1;
p=L2;
while(p&&jnext;j++;}
if(p!=NULL&&j>i-1)printf("ERROR!");
q=(linklist)malloc(sizeof(Lnode));
q->data=e;
q->next=p->next;
p->next=q; }//在不带头结点的单链表的其他位置的插入

printf("nL2:");//输出进行插入操作后的单链表L2
p=L2;
while(p){printf("%d,",p->data);p=p->next;}
printf("n");

i=1;//删除带头结点的单链表的第i个结点
j=0;
p=L1;
while(p->next&&jnext;++j;}//寻找第i-1个结点
if(!(p->next)||j>i-1) printf("ERROR!n");
q=p->next;
p->next=q->next;
e1=q->data;
free(q);

printf("ndeleted: e1=%dn",e1);//输出进行删除操作后的单链表L1,并返回删除的元素e1的值
printf("L1'=");
p=L1->next;
while(p){printf("%d,",p->data);p=p->next;}

i=2;
if(i==1){
q=L2;
e2=q->data;
L2=L2->next;
free(q);}//删除不带头结点的单链表的第1个结点
else {
	p=L2;
	j=1;
    while(p->next&&jnext;++j;}
    if(!(p->next)||j>i-1) printf("ERROR!n");
    q=p->next;
    p->next=q->next;
    e2=q->data;
    free(q);}//删除不带头结点的单链表的其他结点

printf("ndeleted: e2=%d",e2);//输出进行删除操作后的单链表L2,并返回删除的元素e2的值
printf("nL2':");
p=L2;
while(p){printf("%d,",p->data);p=p->next;}
printf("n");

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783838.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号