注册 登录
编程论坛 数据结构与算法

链式表的输出问题

莫丶 发布于 2011-09-26 20:11, 772 次点击
程序代码:
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LNode *L,int n){
    //逆序输入n个元素的值,建立带头结点的单链线性表L
    int i;
    LNode *p;
    L=(LinkList )malloc(sizeof(LNode));
    L->next=NULL;
    for(i=n;i>0;i--){
        p=(LinkList )malloc(sizeof(LNode));
        printf("请输入");
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
}
void main(){
    LinkList  L=NULL,p=NULL;
    int n;
    p=L;
    printf("输入元素数目:");
    scanf("%d",&n);
    printf("\n逆序创建链式表Lb\n");
    CreateList( L, n);
    printf ( "\n链式表Lb内容为:\n" );
    while(p->next!=NULL)
    {     p=p->next;
          printf("%d ",p->data);
    }  
}
为什么输出的时候就不对呢?实在看不出来哪里错了
7 回复
#2
czsbc2011-09-26 20:16
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
     int data;
     struct LNode *next;

 }LNode,*LinkList;

 void CreateList_L(LinkList &L,int n){
     //逆序输入n个元素的值,建立带头结点的单链线性表L
     int i;
     LNode *p;
     L=(LinkList )malloc(sizeof(LNode));
     L->next=NULL;
     for(i=n;i>0;i--){
         p=(LinkList )malloc(sizeof(LNode));
         printf("请输入");
         scanf("%d",&p->data);
         p->next=L->next;
         L->next=p;
     }

 }

 void main(){
     LinkList  L=NULL,p=NULL;
     int n;
     printf("输入元素数目:");
     scanf("%d",&n);
     printf("\n逆序创建链式表Lb\n");
     CreateList_L( L, n);
     p=L;
     printf ( "\n链式表Lb内容为:\n" );
     while(p->next!=NULL)
     {   
         p=p->next;
         printf("%d ",p->data);
     }

 }
#3
莫丶2011-09-26 20:27
回复 2楼 czsbc
还是那样啊 貌似这样和原来的没区别吧
#4
czsbc2011-09-26 20:29
这也叫没区别
#5
czsbc2011-09-26 20:32
void main(){
     LinkList  L=NULL,p=NULL;
     int n;
     p=L;                                //这里p=L=NULL;
     printf("输入元素数目:");
     scanf("%d",&n);
     printf("\n逆序创建链式表Lb\n");
     CreateList( L, n);                //没这个函数
     printf ( "\n链式表Lb内容为:\n" );
     while(p->next!=NULL)                //这里引用错误。
           {     p=p->next;
           printf("%d ",p->data);
     }  
 }
#6
莫丶2011-09-26 21:46
楼上的方法试过了 还是不对
#7
czsbc2011-09-26 21:51
估计你用的不是C++编译器。
还是来C的吧,传指针
程序代码:
#include<stdio.h>

 #include<stdlib.h>

 typedef struct LNode{
      int data;
      struct LNode *next;

 }LNode,*LinkList;
void CreateList_L(LinkList *L,int n){
      //逆序输入n个元素的值,建立带头结点的单链线性表L
      int i;
      LNode *p;
      (*L)=(LinkList )malloc(sizeof(LNode));
      (*L)->next=NULL;
      for(i=n;i>0;i--){
          p=(LinkList )malloc(sizeof(LNode));
          printf("请输入");
          scanf("%d",&p->data);
          p->next=(*L)->next;
          (*L)->next=p;
      }

 }
void main(){
      LinkList  L=NULL,p=NULL;
      int n;
      printf("输入元素数目:");
      scanf("%d",&n);
      printf("\n逆序创建链式表Lb\n");
      CreateList_L( &L, n);
      p=L;
      printf ( "\n链式表Lb内容为:\n" );
      while(p->next!=NULL)
      {
          p=p->next;
          printf("%d ",p->data);
      }

 }



#8
莫丶2011-09-26 22:05
是 CreateList_L(LinkList *L,int n)中第一个参数的问题  
我自己查查看看 分就给你啦
1