创建不带头节点的单链表

本文深入讲解了使用C语言实现链表的两种常见方法——尾插法和首插法。通过对比,读者可以理解如何根据实际需求选择合适的链表构建策略。文章提供了详细的代码示例,帮助读者掌握链表的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

带头节点:第一个节点不带数据

 

#include<stdio.h>
#include<stdlib.h>


typedef struct node
{
	int info;
	struct node *next;
}node;

尾插法:链表顺序和 数据输入顺序一致

node *creatr()
{
	node *head, *p, *r;
        //head用来保存头指针
        //p用来产生新的节点
        //r用来记录尾指针,以便插入新节点
	int data;
	head=NULL;
	r=NULL;
	scanf("%d", &data);
	while(data!=-1)
	{
		p=(node *)malloc(sizeof(node));
                //用条件语句区分第一个节点是否为空
		if(head==NULL)
			head=p;
		else
			r->next=p;
		r=p;
		p->info=data;
		scanf("%d", &data);
	}
        //在输入完数据后,尾指针指向NULL
	if(head!=NULL)
		r->next=NULL;
	return head;
}

 首插法,也称栈式建表法,链表顺序和数据输入顺序相反,

node *creatf()
{
	
	node *p, *head;
	int data;
	p=NULL;
	head=NULL;
	scanf("%d", &data);
	while(data!=-1)
	{
		p=(node *)malloc(sizeof(node));
		//条件语句划分第一个节点是否为空
		if(head==NULL)
		{
			head=p;
			head->next=NULL;
		}
		else
			p->next=head;
		//从尾端开始创建,head不断往前移
		head=p;
		p->info=data;
		scanf("%d", &data);
	}
	return head;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值