在单链表的创建中分为尾插和头插两种方法,尾插法创建的链表为正序的,与之对应的,头插法创建的链表则是逆序的。
节点的声明
struct Node{
int data;
struct Node *next;//结构体类型的next指针
//是用于存下一个节点的地址
}*head;//head则为头指针
创建链表的代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct NODE{
int data;
struct STU *next;
}node;//用node 来表示struct NODE类型
node *build(void)
{
stu *head,*p,*end,*q;
int i;
head=(node *)malloc(sizeof(node));
head->next=NULL;//头结点的申请
p=(node *)malloc(sizeof(node));
if(p!=NULL)
{
scanf("%d",&p->data);
p->next=head->next;//使新申请的节点的指针域指向为空
head->next=p;//使头结点的指针域存入新申请的节点
end=p;q=p;
}
for(i=1;i<10;i++)
{
p=(node *)malloc(sizeof(node));
if(p!=NULL)
{
scanf("%d",&p->data);
p->next=q;
head->next=p;
q=p;//循环申请新的空间,依次将其插入头和头的下一个节点之间
}
}
return head;
}
int main()
{
stu *head,*p;
int i;
head=build();
p=head->next;
printf("\n");
for(i=0;i<10;i++)
{
printf("%d\n",p->data);
p=p->next;
}//输出链表
return 0;
}