带有空表头的创建链表的方法(下附用指针创建带有空表头的链表)

#include<stdio.h>
#include<stdlib.h>
typedef struct num{
	int num;
	struct num *next;
}Num, *NUM;
//创建链表 
NUM createlist(NUM L,int x)
{
	printf("开始创建链表\n");
	NUM head,r,s,tail;
	int i=0;
	head=(NUM)malloc(sizeof(Num));	//初始化head节点,为空表头开辟一个内存空间 
	while(i<x)
	{
		s=(Num *)malloc(sizeof(Num));
//		printf("请输入数字\n");
		scanf("%d",&s->num);
		if(i==0)
		{
			head->next=s;
		}
		else
		{
			r->next=s;
		}
		r=s;
		i++;
	}
	tail=(NUM)malloc(sizeof(Num));
	tail->next=NULL;
	r->next=tail;
	printf("\n创建链表成功!\n");
	return head;
} 
void getlist(NUM L)
{
	printf("\n开始输出\n");
//传入的是空表头,只是储存了下一个节点的地址,需要让它指向真正的头节点 
	L=L->next;	
	while(L->next !=NULL)
	{
		printf("%d ",L->num);
		L=L->next;
	}
	printf("\n输出完毕\n");	
}
void main()
{
	NUM r,s;
//	NUM *head=&r;
/*这里其实可以用指针的方法去创建一个链表,
在创建链表的子函数中return就可以执行其他功能了 */ 
	int x,y;
	printf("请输入想要创建的链表数\n");
	scanf("%d",&x);
	s=createlist(r,x);
	getlist(s);
}

用指针的方法创建带有空表头的链表

#include<stdio.h>
#include<stdlib.h>
typedef struct num{
	int num;
	struct num *next;
}Num, *NUM;
//创建链表 
NUM createlist(NUM *L,int x)
{
	printf("开始创建链表\n");
	NUM r,s,tail;
	int i=0;
	*L=(NUM)malloc(sizeof(Num));
	(*L)->next=NULL;
	while(i<x)
	{
		s=(Num *)malloc(sizeof(Num));
//		printf("请输入数字\n");
		scanf("%d",&s->num);
		if(i==0)
		{
			(*L)->next=head;
		}
		else
		{
			r->next=s;
		}
		r=s;
		i++;
	}
	tail=(NUM)malloc(sizeof(Num));
	tail->next=NULL;
	r->next=tail;
	printf("\n创建链表成功!\n");
//	return head;
} 
void getlist(NUM L)
{
	printf("\n开始输出\n");
//	if(L==NULL)
		L=L->next;
	while(L->next !=NULL)
	{
		printf("%d ",L->num);
		L=L->next;
	}
	printf("\n输出完毕\n");
	
}
void main()
{
	NUM r,s;
	NUM *head=&r;
	int x,y;
	printf("请输入想要创建的链表数\n");
	scanf("%d",&x);
	createlist(head,x);
	getlist(r);
}

其实用return的方法和用指针的方法创建链表的方法没有多大的区别,只是,当return这个函数有其他需要的时候可以用指针直接创建链表

其次,指针法创建链表(*L)->next=s就储存了头节点的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值