在c语言中为什么输出不了线性表的元素?
#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();}
追问:
还是没有输出元素
你要完全用我的程序,我测试的结果
其他回答
暂无其它回答!