求路过的鱼油看看
这是老师题目中的一部分,我截了这段搞了很久我第一个问题就是,原来data是char的,但是用char程序就会出现问题
第二个问题就是我为什么在主函数实现不了aa函数的操作,明明都一模一样
{:10_277:}
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
typedef struct node
{int data; //数据域
struct node *next;//指向下一个节点的指针
}LNode,*LinkList;
void aa(LinkList ,int );
int main()
{
LinkList l,v,t;
int n=5;
/*int i;
l=(LinkList)malloc(sizeof(struct node));
l->next=NULL;*/
aa(l ,n );
/*for(i=0;i<n;i++)
{
v=(LinkList)malloc(sizeof(struct node));
scanf("%d",v->data);
v->next=l->next;
l->next=v;
}
t=l->next;
while(t)
{
printf("正在打印:%d\n",t->data);
t=t->next;
}*/
return 0;
}
void aa(LinkList v,int n)
{
int i;
LinkList q,p,t,j;
v=(LinkList )malloc(sizeof(struct node));
v->next=NULL;
while(n!=0)
{
p=(LinkList)malloc(sizeof(struct node));
scanf("%d",&p->data);
p->next=v->next;
v->next=p;
n--;
}
t=v->next;
while(t)
{
printf("正在打印:%d\n",t->data);
t=t->next;
}
} 调试后出现这个问题:Program received signal SIGSEGV, Segmentation fault.
这是第一个问题的截屏https://s1.ax1x.com/2020/04/05/GDwVhR.png char对应的scanf,printf也有改为%c
为什么传了链表进去还要重新申请空间? 申请新的空间不是就是增加新的节点吗? p=(LinkList)malloc(sizeof(struct node));
scanf("%d",&p->data);
temp=v->next;
v->next=p;
p->next=temp;
n--;
你应该要用头插法,增加一temp来存放上一个头部 汉末天子 发表于 2020-4-5 22:31
p=(LinkList)malloc(sizeof(struct node));
scanf("%d",&p->data);
这个也相当于头插法,换用你这样也是有问题,把结构体的char换成int就没有问题?这是我电脑问题? BngThea 发表于 2020-4-5 17:30
char对应的scanf,printf也有改为%c
为什么传了链表进去还要重新申请空间?
主函数那个代码我已经用/**/隔开了,那个是我测试用的, 大马强 发表于 2020-4-6 07:44
主函数那个代码我已经用/**/隔开了,那个是我测试用的,
你传入了v,然后又将v重新申请空间,请问你前面的v申请的空间到哪里去了,而且里面没有存放有效数据 本帖最后由 大马强 于 2020-4-6 11:21 编辑
BngThea 发表于 2020-4-6 09:04
你传入了v,然后又将v重新申请空间,请问你前面的v申请的空间到哪里去了,而且里面没有存放有效数据
误解有点大耶,
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
typedef struct node
{char data; //数据域
struct node *next;//指向下一个节点的指针
}LNode,*LinkList;
void aa(LinkList ,int );
int main()
{
LinkList l,v,t;
int n=5;
printf("正在录入五个数据!\n");
aa(l ,n );
return 0;
}
void aa(LinkList v,int n)
{
int i=1;
LinkList q,p,t,j,temp;
v=(LinkList )malloc(sizeof(struct node));
v->next=NULL;
while(n!=0)
{
p=(LinkList)malloc(sizeof(struct node));
printf("第%d个数据:",i);
scanf("%c",&p->data);
p->next=v->next;
v->next=p;
n--;
i++;
}
t=v->next;
while(t)
{
printf("正在打印:%c\n",t->data);
t=t->next;
}
}
大马强 发表于 2020-4-6 09:36
误解点大这是我问的代码
#include
#include
具体有什么不一样的,我看了你二楼的图片,没看出来你想说明什么 BngThea 发表于 2020-4-6 09:43
具体有什么不一样的,我看了你二楼的图片,没看出来你想说明什么
比如说我把结构体的data的数据类型换成int就可以正常输入
https://s1.ax1x.com/2020/04/06/Gs3EsH.png
如果是char类型就会这样
https://s1.ax1x.com/2020/04/06/Gs33Qg.png
有空就在帮我看看我另一个问题谢谢啦{:10_282:}
页:
[1]