求助C语言单链表问题,输出链表总是错误

#include<string.h>#include<stdio.h>#include<alloc.h>#defineM10typedefchardatatype;typ... #include <string.h>
#include <stdio.h>
#include <alloc.h>
#define M 10

typedef char datatype;
typedef struct node
{
datatype data[M];
struct node *next;
} linklist;

int LENGTH(linklist *head)
{
int i=0;linklist *p;
p=head->next;
while(p)
{i++; p=p->next;}
return i;
}

void main()
{
linklist *head,*s;
int n;
datatype x[M];
clrscr();
head=malloc(sizeof(linklist));
head->next=NULL;
printf("please input the data[M]:\n");
gets(x);
while(strcmp(x,"")!=0)
{
s=malloc(sizeof(linklist));
s->data[M]=x[M];
s->next=head->next;
head->next=s;
gets(x);
}

n=LENGTH(head);
printf("the total number is %d\n",n);
sprintf(x,"%d",n);
strcpy(head->data,x);
s=head;
while(s)
{
puts(s->data);
s=s->next;
}

getch();

}


展开
 我来答
suiyue_2009
2009-03-07 · TA获得超过846个赞
知道小有建树答主
回答量:1248
采纳率:0%
帮助的人:885万
展开全部
#include <string.h>
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#define M 10

typedef char datatype;
typedef struct node
{
datatype data[M];
struct node *next;
} linklist;

int LENGTH(linklist *head)
{
int i=0;linklist *p;
p=head->next;
while(p)
{i++; p=p->next;}
return i;
}

void main()
{
linklist *head,*s;
int n;
datatype x[M];
clrscr();
head=(linklist*)malloc(sizeof(linklist));
head->next=NULL;
printf("please input the data[M]:\n");
gets(x);
while(strcmp(x,"")!=0)
{
s=(linklist*)malloc(sizeof(linklist));
s->data[M]=x[M];
s->next=head->next;
head->next=s;
gets(x);
}

n=LENGTH(head);
printf("the total number is %d\n",n);
sprintf(x,"%d",n);
strcpy(head->data,x);
s=head;
while(s)
{
puts(s->data);
s=s->next;
}

getch();

}
wdtd88
2009-03-07 · TA获得超过299个赞
知道小有建树答主
回答量:184
采纳率:0%
帮助的人:218万
展开全部
你是实现链表的反向吗?
/**对于一个字符串数组到另一个数组的赋值要一个个来,不能像数值型数组**/
whiel循环里的字符间赋值改为下面的内容.
for(i=0;x[i]!='\0';i++)
s->data[i]=x[i];
s->data[i]='\0';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式