在c语言中为什么输出不了线性表的元素?

原问题:在c语言中为什么输出不了线性表的元素?
分类:编程开发 > 最后更新时间:【2017-06-24 17:42:01】
问题补充:

#include"stdio.h"

#include"stdlib.h"

typedef struct linknode

{ int data;

struct linknode *next;

}LinkNode,*LinkList;

void CreateLinkList()

{

LinkNode *head,*p,*s;

int x;

int z=1,n=0;

head=NULL;

p=head;

printf("\n\t\t建立一个线性表");

printf("\n\t\t说明:请逐个输入整数,结束标记为‘-1!’\n");

while(z)

{

printf("\t\t输入:");

scanf("%d",&x);

if(x!=-1)

{ s=(LinkNode *)malloc(sizeof(LinkNode));

s->data=x;

s->next=NULL;

if(!head) head=s;

else p->next=s;

p=s;

n++;

}

else z=0;

}

}

void ShowList()

{ LinkNode *head,*s;

head=NULL;

s=head;

printf("\n\t\t显示线性表所有元素:");

printf("\n\t\t");

while(s->next!=NULL)

{

printf("%d",s->data);

s=s->next;

}

}

void main()

{

CreateLinkList();

printf("线性表建立完成\n");

ShowList();

}

最佳答案

你的 ShowList()中,s=head=NULL;根本就没有链表存在,CreateLinkList()中建立的链表你没有用到,当然没有输出

你要么将head设为全局变量,要么用参数传递它(C语言的局部变量只在本函数中有效)


追问:
请问一下该怎么改呢! 追答:
我上面说了解决方案了以下改好的:(有多个方法)#include"stdio.h"#include"stdlib.h"typedef struct linknode{ int data; struct linknode *next;} LinkNode, *LinkList;LinkNode *head=NULL;void CreateLinkList(){ LinkNode *p, *s; int x; int z = 1, n = 0; p=head; printf("\n\t\t建立一个线性表"); printf("\n\t\t说明:请逐个输入整数,结束标记为‘-1!’\n"); while(z) { printf("\t\t输入:"); scanf("%d", &x); if(x != -1) { s = (LinkNode *)malloc(sizeof(LinkNode)); s->data = x; s->next = NULL; if(!head) head = s; else p->next = s; p = s; n++; } else z = 0; }}void ShowList(){ LinkNode *s; s = head; printf("\n\t\t显示线性表所有元素:"); printf("\n\t\t"); while(s!= NULL) { printf("%d", s->data); s = s->next; }}void main(){ CreateLinkList(); printf("线性表建立完成\n"); ShowList();}
追问:
还是没有输出元素
  • 追答:
    你要完全用我的程序,我测试的结果
    最佳答案由网友  whoami1978  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    18

    分享到:

    其他回答

    暂无其它回答!

      推荐