欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

创建不带头节点的单链表

程序员文章站 2022-03-15 18:14:50
...

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

 

#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;
}