纯C语言实现单链表操作

#include 
#include 
#include 
typedef int ElemType;

typedef struct node {
    int data;        //数据域    
    struct node *next;    //指针域
} SLinkNode ;                //单链表类型

void InitList(SLinkNode *&L1)
{
    //初始化单链表L
    L1 = (SLinkNode )malloc(sizeof(SLinkNode));    //创建头结点L
    L1->next = NULL;
}

void DispList(SLinkNode *L1)        //输出单链表
{    SLinkNode *p=L1->next;
    while (p!=NULL)
    {    printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

void  CreateListF(SLinkNode *&L1, int a[],int n) {
    //整体创建单链表
    L1 = (SLinkNode *)malloc(sizeof(SLinkNode));
    L1->next = NULL; //置空
    int b;
    SLinkNode *s;//s节点
        for (b = 0; b < n; b++)
    {
        //头插法
    s = (SLinkNode *)malloc(sizeof(SLinkNode));
    s->data = a[b];
        s->next = L1->next; //置于L之后 并且将s->next置空
    L1->next = s; //
    }
}
void      basic_action()
{
    int a[11];
    int n;  
    scanf("%d",&n);
    for(int i=0;i
    {
        scanf("%d",&a[i]);
    }
     SLinkNode *L1;
    InitList(L1);
    CreateListF(L1,a,n); 
    DispList(L1);

}

int main()

{
    void basic_action();
    return 0;
}

编译运行的话 什么都没有
有没有人看看这个是什么原因

改动处见注释,供参考:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef int ElemType;

typedef struct node {
    int data;        //数据域
    struct node *next; //指针域
} SLinkNode ;          //单链表类型

void InitList(SLinkNode *&L1)
{
    //初始化单链表L
    L1 = (SLinkNode*)malloc(sizeof(SLinkNode));//创建头结点L
    L1->next = NULL;
}

void DispList(SLinkNode *L1)//输出单链表
{    SLinkNode *p=L1->next;
    while (p!=NULL)
    {    printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

void  CreateListF(SLinkNode *&L1, int a[],int n) {
    //整体创建单链表
               //L1 = (SLinkNode *)malloc(sizeof(SLinkNode)); 修改
               //L1->next = NULL; //置空                      修改
    int b;
    SLinkNode *s;//s节点
    for (b = 0; b < n; b++)
    {
        //头插法
        s = (SLinkNode *)malloc(sizeof(SLinkNode));
        s->data = a[b];
        s->next = L1->next;//置于L之后 并且将s->next置空
        L1->next = s;
    }
}
void basic_action()
{
    int a[11];
    int n;  
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    SLinkNode *L1;
    InitList(L1);
    CreateListF(L1,a,n);
    DispList(L1);

}
int main()
{
    basic_action();       //void basic_action(); 修改
    return 0;
}

你可以看下,我博客中单链表的操作