单链表的头插法(C语言实现)

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


typedef struct LNode{
    int data;
    struct LNode* next; //next是一个指向结构体类型的指针, LNode* 是一个指针数据类型类似int,float那样的数据类型
}LNode,*LinkList;       //创建了2个LNode结构体变量,一个是LNode,另一个是*LinkList。

LinkList List_HeadInsert(LinkList &L , int n)//返回值为一个指针,指针类型为LinkList,这里的&是引用符号,不是取地址符号
{
    int i,x;
    LNode *s;
    L = (LinkList)malloc(sizeof(LNode));//malloc函数返回值是一个指针(地址),大小为数据类型大小
    L->next = NULL;

    for(i=0;i<n;i++)
    {
        s = (LinkList)malloc(sizeof(LNode));
        printf("请输入第%d个数字:",i+1);
        scanf("%d",&x);
        s->data = x;
        s->next = L->next;
        L->next = s;
    }
    return L;
}

int main()
{
    int n;
    LNode* node;
    LinkList L;//上面函数的返回值是LinkList类型,那么创建变量时也应该创建一个LinkList类型的变量,不能用LNode创建

    printf("请输入节点个数n:");
    scanf("%d",&n);

    List_HeadInsert(L,n);
    node = L->next;

    printf("按照单链表的顺序输出链表元素:
");
    while(node != NULL)//遍历链表不多说
    {
        printf("%d ",node->data);
        node = node->next;
    }
    printf("
");
    return 0;
}

原文地址:https://www.cnblogs.com/Romantic-Chopin/p/13341334.html