C语言静态链表输出小问题?

来源:百度知道 编辑:UC知道 时间:2024/07/01 01:01:09
本意是给有3个节点的静态链表输入100,200,300这3个数,然后在屏幕上输出出来,结果输入后得出的
输出结果都是0,0,0,不知道输入环节错在什么地方,拜托大家赐教一下,谢谢,源程序如下:
#include <stdio.h>
#include <conio.h>

struct lianbiao
{
int n;
struct lianbiao *next;
}a, b, c;

void display(struct lianbiao *head)
{
struct lianbiao *p = NULL;
p = head;
while(p != NULL)
{
printf("%d\n", p -> n);
p = p -> next;
}

void main(void)
{
struct lianbiao *head = NULL, *p = NULL;
clrscr();
head = &a; a.next = &b; b.next = &c; c.next = NULL;
p = head;
while(p != NULL)
{
scanf("%d", p -> n);
p = p -> next;
}
display(head);
}

楼主注意啦!!!!
你在用scanf函数输入一个整数的时候p->n前要加上一个求地址符&
scanf("%d", p -> n); 应该改成 scanf("%d", &(p -> n));

#include <stdio.h>
#include <conio.h>

struct lianbiao
{
int n;
struct lianbiao *next;
}a, b, c;

void display(struct lianbiao *head)
{
struct lianbiao *p = NULL;
p = head;
while(p != NULL)
{
printf("%d\n", p -> n);
p = p -> next;
}
}

void main(void)
{
struct lianbiao *head = NULL, *p = NULL;
//clrscr();
head = &a; a.next = &b; b.next = &c; c.next = NULL;
p = head;
while(p != NULL)
{
scanf("%d", &(p -> n));
p = p -> next;
}
display(head);
}

兄弟,你说你可以运行不是真的吧,
void display(struct lianbiao *head)最后少一个大括号,我可是
找了一会才发现的呀
我运行了下,你如果直接a.n=100,b.n=200,c.n=300,而不使用输入的形势,那这个程序的输出示正确的,所以说是