前插法创建单链表(C语言实现)

#include<stdio.h>
#include<stdlib.h>
struct node{
    int data;//结点的数据域
    struct node *next;//结点的指针域
};
int main()
{
    struct node *head,*p;
    int i,n;
    head = (struct node *)malloc(sizeof(struct node));//为头结点申请空间
    head->next = NULL;//头结点指针域指向空
    printf("请输入链表长度:");
    scanf("%d",&n);//输入表长
    for(i=1;i<=n;i++)
    {
        p = (struct node *)malloc(sizeof(struct node));//为新结点申请空间
        scanf("%d",&p->data);//向新结点p的数据域中添加元素
        p->next = head->next;
        head->next = p;//头结点的指针域指向新结点
    }
    while(1)//遍历元素
    {
        printf("%d ",p->data);
        if(p->next==NULL)
            break;//如果是最后一个结点则跳出循环
        p = p->next;//p指向下一个结点
    }
    return 0;
}
实现过程如下图:

前插法创建单链表(C语言实现)