简单的单链表创建,但是为什么输入会把换行符也输进去...
输入的时候会把空格符,换行符也一起当做输入输进去,然后输出就显示内存无法读取
搞不明白为什么,各位帮帮忙,谢谢了 代码在下面:
#include "stdio.h"
#include "stdlib.h"
\\结构体
struct data
{
int i;
struct data *next;
};
struct data *head= NULL;
\\主函数
void main()
{
struct data *p, *q, *tail ;
int n=5, m;
int c;
\\尾插法建表
for(m=1; m<5; m++)
{
scanf("%d", &c); \\这里输入 ,调试发现如果输入:2+(回车or空格),
下次循环到这里就跳过,然后C的数值显示为相应的ASC码
p=(struct data*)malloc(sizeof(struct data));
if( p ==NULL)
{
printf("error");
exit(EXIT_FAILURE);
}
p->i= c;
if(head == NULL)
{
head =p;
tail =p;
}
else
{
tail->next=p;
tail=p;
}
}
for(q==NULL; q!=NULL; q=q->next) \\输出 会跳出窗口,说该内存不能为read ,怨念啊....
printf("%d", q->i);
}
[解决办法]
忘记添加p->next=NULL了吧???
[解决办法]
for(q==NULL; q!=NULL; q=q->next)
前后矛盾啊!这个循环怎么成立?
q 的初值和条件!
还有就是P->NEXT需要赋值为=NULL;
[解决办法]
我把你的程序改了一下,现在可以了[code=C/C++][/code]
#include "stdio.h"
#include "stdlib.h"
//结构体
typedef struct data
{
int data;
struct data *next;
}LNode,linkList;
//尾插法建表
linkList *creatLink()
{
linkList *head;
head = (linkList*)malloc(sizeof(LNode));
head = NULL;
linkList *tail,*P;
int n=5, m;
int c;
for(m=1; m<n; m++)
{
scanf("%d", &c); //这里输入 ,调试发现如果输入:2+(回车or空格),
//下次循环到这里就跳过,然后C的数值显示为相应的ASC码
P=(linkList*)malloc(sizeof(LNode));
if( !P)
{
printf("error");
exit(EXIT_FAILURE);
}
P->data= c;
if(head == NULL)
{
head=P;
tail =P;
}
else
{
tail->next=P;
tail=P;
}
}
tail->next = NULL;
return head;
}
void print_link(linkList *head)
{
linkList *p = head;
for(; p!=NULL; p=p->next) //输出 会跳出窗口,说该内存不能为read ,怨念啊....
printf("%d", p->data);
}
//主函数
int main()
{
linkList *head;
head = creatLink();
print_link(head);
return 0;
}