关于链表的几个问题
1.这个程序我是想按输入的顺序输出的,但只输出了一段乱码,那里错了?
#include "stdio.h"
#include "stdlib.h"
typedef struct Node
{
int Ndata;
Node *next;
}Node;
Node *creat(int k);
void pritlink(Node *head);
void main()
{
Node *w;
int y;
printf("请输入你想要输入数据的个数:");
scanf(" %d",&y);
w=creat(y);
pritlink(w);
}
Node *creat(int k)
{
Node *head,*p,*s,*r;
int i,m;
head=(Node *)malloc(sizeof(Node));
if(!head)
{
printf("分配内存失败!\n");
exit(0);
}
head->next =NULL;
p=head;
for(i=1;i<=k;i++)
{
s=(Node *)malloc(sizeof(Node));
if(!s)
{
printf("分配内存失败!\n");
exit(0);
}
s->next=NULL;
printf("请输入第%d个整数\n",i);
scanf("%d",&s->Ndata);
if(i==1)
{
s->next=head ;
head=s;
}
while(head)
{
r=head;
head=head->next ;
}
r=s;
}
return (p);
}
void pritlink(Node *head)
{
Node *p;
p=head;
if(p)
{
do
{
printf(" %d",p->Ndata);
p=p->next;
}while(p!=NULL);
printf("\n");
}
else
printf("该表为空!");
}
2.这是按输入的反序输出的,但在输完数据后还输出了一段乱码,怎么回事??
#include "stdio.h"
#include "stdlib.h"
typedef struct Node
{
int Ndata;
Node *next;
}Node;
Node *creat(int k);
void pritlink(Node *head);
void main()
{
Node *w;
int y;
printf("请输入你想要输入数据的个数:");
scanf(" %d",&y);
w=creat(y);
pritlink(w);
}
Node *creat(int k)
{
Node *head,*p,*s;
int i;
head=(Node *)malloc(sizeof(Node));
if(!head)
{
printf("分配内存失败!\n");
exit(0);
}
head->next =NULL;
for(i=1;i<=k;i++)
{
s=(Node *)malloc(sizeof(Node));
if(!s)
{
printf("分配内存失败!\n");
exit(0);
}
s->next=NULL;
printf("请输入第%d个整数\n",i);
scanf("%d",&s->Ndata);
s->next=head;
head=s;
}
return (head);
}
void pritlink(Node *head)
{
Node *p;
p=head;
if(p)
{
do
{
printf(" %d",p->Ndata);
p=p->next;
}while(p!=NULL);
printf("\n");
}
else
printf("该表为空!");
}
[解决办法]
设个断点自己慢慢调试
[解决办法]
1.你的创建函数有问题
Node *creat(int k)
{
Node *head,*p,*s,*r;
int i;
head= p =NULL;
for(i=1;i<=k;i++)
{
s=(Node *)malloc(sizeof(Node));
if(!s)
{
printf("分配内存失败!\n");
exit(0);
}
s->next=NULL;
printf("请输入第%d个整数\n",i);
scanf("%d",&s->Ndata);
if(head==NULL)
{
head = s;
}
else
p->next = s ;
p = s ;
}
return (head);
}
2.将如下代码修改
head=(Node *)malloc(sizeof(Node));
if(!head)
{
printf("分配内存失败!\n");
exit(0);
}
head->next =NULL;
改成:head = NULL;
基本上都是链表的创建思路不是很清晰,希望在多看看书。
------解决方案--------------------
刚开始写链表的时候,边写边在纸上画画就清晰了!我就这样....