单链表的创建和输出,输入后不执行output函数

#include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void InitList_L(LinkList L){ L=(LinkList)malloc(sizeof(LNode)); L->next=NULL;}void CreateList_H(LinkList L,int n){ L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; LinkList p=L; int i; printf("倒序输入数据:"); for(i=0;idata); p->next=L->next; L->next=p; }}void OutputData(LinkList L){ if(L->next==NULL){ printf("链表为空"); } printf("ok"); LinkList p=L->next; while(p!=NULL){ printf("%d",L->data); p=p->next; }}int main(int argc, char *argv[]) { LinkList l; CreateList_H(l,2); OutputData(l); return 0;}

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
// run this program using the console pauser or add your own getch, system("pause") or input loop
typedef int ElemType;
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

void InitList_L(LinkList* L)  //(LinkList L)
{
    (*L)=(LinkList)malloc(sizeof(LNode)); //修改
    (*L)->next=NULL;                      //修改
}
void CreateList_H(LinkList L,int n)
{
    //L=(LinkList)malloc(sizeof(LNode)); 修改
    //L->next=NULL;                      修改
    LinkList p=L;
    int i;
    printf("倒序输入数据:");
    for(i=0;i<n;++i)
    {
        p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
}
void OutputData(LinkList L)
{
    if(L->next==NULL){
        printf("链表为空");
        return;       //修改
    }
    printf("ok");
    LinkList p=L->next;
    while(p!=NULL){
        printf("%d ",p->data); //("%d ",L->data); 修改
        p=p->next;
    }
}
int main(int argc, char *argv[])
{
    LinkList l;
    InitList_L(&l); //修改
    CreateList_H(l,2);
    OutputData(l);

    return 0;
}