首页 > 其他 > 详细

带结点与不带结点用头插法和尾插法创建单链表

时间:2021-06-19 15:14:45      阅读:19      评论:0      收藏:0      [点我收藏+]

 

 

一、采用带有头结点的头插法逆向建立单链表

Linklist List_HeadInsert1(LinkList &L)  //采用带有头结点的头插法逆向建立单链表 
{
	LNode *s;  //声明一个临时结点 
	int x;
	L=(LinkList)malloc(sizeof(LNode));  //创建头结点
	L->next=NULL;  //初始为空链表 
	scanf("%d",&x);  //输入结点的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //创建新结点 
		s->data=x;
		s->next=L->next;  //将新结点插入表中,L为头指针 
		L->next=s;
		scanf("%d",&x);
	}
	return L;
}

  

 

二、采用不带有头结点的头插法逆向建立单链表

Linklist List_HeadInsert2(LinkList &L)  //采用不带有头结点的头插法逆向建立单链表 
{
	LNode *s;  //声明一个临时结点 
	int x;
	L=NULL;  
	scanf("%d",&x);  //输入结点的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //创建新结点 
		s->data=x;
		if(L==NULL)  // 若第一次创建节点,则将该点设置为头节点
		{
			L=s;
			s->next=NULL;
		 } 
		else{  // 若不是第一次创建节点,则直接将新节点接到链表头
			s->next=L;
			L=s;
		}
		scanf("%d",&x);
	}
	return L;
}

  

 

三、采用带有头结点的尾插法正向建立单链表

Linklist List_TailInsert1(LinkList &L)  //采用带有头结点的尾插法正向建立单链表 
{
	LNode *s,*r;  //s为临时结点,r为表尾指针 
	int x;
	L=(LinkList)malloc(sizeof(LNode));  //创建头结点
	L->next=NULL;  //初始为空链表 
	r=L;
	scanf("%d",&x);  //输入结点的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //创建新结点 
		s->data=x;
		r->next=s;
		r=s;  //r指向新的表尾结点 
		scanf("%d",&x);
	}
	r->next=NULL;  //尾结点指针为空 
	return L;
}

  

 

四、用不带有头结点的尾插法正向建立单链表

Linklist List_TailInsert2(LinkList &L)  //采用不带有头结点的尾插法正向建立单链表 
{
	LNode *s,*r;  //s为临时结点,r为表尾指针 
	int x;
	L=NULL;  
	r=L;
	scanf("%d",&x);  //输入结点的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //创建新结点 
		s->data=x;
		if(L==NULL)  // 创建链表的第一个节点
		{
			L=s;
			r=s;
			s->next=NULL;
		 } 
		else{
			r->next=s;
			r=s;
		}
		scanf("%d",&x);
	}
	r->next=NULL;  //尾结点指针为空 
	return L;
}

  

 

带结点与不带结点用头插法和尾插法创建单链表

原文:https://www.cnblogs.com/canneddream/p/14902435.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!