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");
} 展开
#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");
} 展开
1个回答
展开全部
因为:
typedef struct Node //单链表的存储结构
{
int data;
struct Node *next;
}Node,*LinkList;
这个里面的数据类型是int,后面的c=getchar();是读入字符
后面的输出:
printf("%d",p->data);又是int了,自然不是字符了
改的方法最简单就是 :
printf("%c",p->data);
当然,如果单链表的类型改为char型,这里也要改成"%c"
顺便说一句:所有字符必须连续输入到最后的“$”才能回车,当然最后链表中元素的结果才是各单个字符
typedef struct Node //单链表的存储结构
{
int data;
struct Node *next;
}Node,*LinkList;
这个里面的数据类型是int,后面的c=getchar();是读入字符
后面的输出:
printf("%d",p->data);又是int了,自然不是字符了
改的方法最简单就是 :
printf("%c",p->data);
当然,如果单链表的类型改为char型,这里也要改成"%c"
顺便说一句:所有字符必须连续输入到最后的“$”才能回车,当然最后链表中元素的结果才是各单个字符
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询