创建不带头节点的单链表
程序员文章站
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;
}
上一篇: MIT 6.824 lab2 PartA
下一篇: 第五节:条件控制语句