鱼C论坛

 找回密码
 立即注册
查看: 2018|回复: 10

求路过的鱼油看看

[复制链接]
发表于 2020-4-5 17:26:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是老师题目中的一部分,我截了这段搞了很久
我第一个问题就是,原来data是char的,但是用char程序就会出现问题
第二个问题就是我为什么在主函数实现不了aa函数的操作,明明都一模一样

#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;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-5 17:29:03 | 显示全部楼层
调试后出现这个问题:Program received signal SIGSEGV, Segmentation fault.
这是第一个问题的截屏

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 17:30:11 | 显示全部楼层
char对应的scanf,printf也有改为%c
为什么传了链表进去还要重新申请空间?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 17:36:04 | 显示全部楼层
申请新的空间不是就是增加新的节点吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 22:31:29 | 显示全部楼层
p=(LinkList)malloc(sizeof(struct node));
               
                scanf("%d",&p->data);
                temp=v->next;
                v->next=p;
                p->next=temp;
                n--;
你应该要用头插法,增加一temp来存放上一个头部
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 07:42:41 | 显示全部楼层
汉末天子 发表于 2020-4-5 22:31
p=(LinkList)malloc(sizeof(struct node));
               
                scanf("%d",&p->data);

这个也相当于头插法,换用你这样也是有问题,把结构体的char换成int就没有问题?这是我电脑问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 07:44:08 | 显示全部楼层
BngThea 发表于 2020-4-5 17:30
char对应的scanf,printf也有改为%c
为什么传了链表进去还要重新申请空间?

主函数那个代码我已经用/**/隔开了,那个是我测试用的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 09:04:32 | 显示全部楼层
大马强 发表于 2020-4-6 07:44
主函数那个代码我已经用/**/隔开了,那个是我测试用的,

你传入了v,然后又将v重新申请空间,请问你前面的v申请的空间到哪里去了,而且里面没有存放有效数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 09:36:31 | 显示全部楼层
本帖最后由 大马强 于 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;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 09:43:37 | 显示全部楼层
大马强 发表于 2020-4-6 09:36
误解点大这是我问的代码
#include
#include

具体有什么不一样的,我看了你二楼的图片,没看出来你想说明什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 11:20:25 | 显示全部楼层
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
有空就在帮我看看我另一个问题谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-10 09:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表