c语言如何输出单链表,为什么我的输出和输入不一致呢?

#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedefstructNode//单链表的存储结构{intd... #include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef struct Node //单链表的存储结构
{
int data;
struct Node *next;
}Node,*LinkList;

void CreateFromTail(LinkList L) //利用尾插法建立单链表
{
Node *r,*s;
int c;
int flag=1;
r=L;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=NULL;
}
}
}

void Output(LinkList L) //单链表的输出
{
Node *p;
p=L->next;
printf("单链表的元素为:\n");
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
}

void main()
{
LinkList H;
H=(LinkList)malloc(sizeof(Node));
H->next=NULL;

printf("请建立一个单链表:\n");
CreateFromTail(H);
Output(H);
printf("\n");
}
展开
 我来答
chiconysun
2012-11-05 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2586万
展开全部
因为:
typedef struct Node //单链表的存储结构
{
int data;
struct Node *next;
}Node,*LinkList;
这个里面的数据类型是int,后面的c=getchar();是读入字符
后面的输出:
printf("%d",p->data);又是int了,自然不是字符了
改的方法最简单就是 :
printf("%c",p->data);
当然,如果单链表的类型改为char型,这里也要改成"%c"

顺便说一句:所有字符必须连续输入到最后的“$”才能回车,当然最后链表中元素的结果才是各单个字符
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式