weixin_46000478 2021-08-17 21:40 采纳率: 100%
浏览 20
已结题

xcode 求表长度代码无错输入结束报错

img

删除howlong函数后可以做到插入数据 查找数据功能但是带入howlong函数可以输入数据 输入数据结束后出现上图所示报错
代码我觉得没问题 是不是编译器问题希望有兄弟可以站出来指点我一波 问题很简单 但是弟弟我蚌埠住了折磨我要一天了


#include <iostream>
using namespace::std;
typedef struct Lnode *list;
struct Lnode
{
    int data;
    list next=NULL;
};
int howlong(list x)
{
    int j=1;
    list p=x;
    while(p!=NULL)
    {
        p=p->next;
        j++;
    }
    return j;
}
list find_it_by_position(list x,int position)
{
    int i=0;
    list p=x;
    while(p!=NULL&&i<position){
        p=p->next;
        i++;
    }
    if(i==position)
        return p;
    else
        return NULL;
}
list find_it_by_target(list x,int target)
{
    list p=x;
    while(p&&p->data!=target)
    {
        if(p->data==target)
            return p;
        p=p->next;
    }
    return  NULL;
}
list insert(list x,int target,int position)
{
    list s,p;
    if(position==0)
    {
        s=(list)malloc(sizeof(struct Lnode));
        s->data=target;
        s->next=x;
        return s;
    }
    s=find_it_by_position(x, position-1);
    if(s==NULL)
    {cout <<"wrong!";
        return NULL;}
    else
    {
        p=(list)malloc(sizeof(struct Lnode));
        p->data=target;
        p->next=s->next;
        s->next=p;
    }
    return x;
}
int main()
{
    int x;
    cin >>x;
    list l=(list)malloc(sizeof(struct Lnode));
    for(int i=1;i<=x;i++)
    {
        int q;
        cin >>q;
        insert(l,q,i);
    }
    cout <<howlong(l);
    cout <<find_it_by_position(l, 3)->data;
}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-08-18 10:26
    关注

    代码没有大问题,只是不严谨造成的,头结点的next指针没定义指向NULL,和编译器无关,修改如下,供参考:

    #include <iostream>
    using namespace  std;//这里做了修改
    typedef struct Lnode* list;
    struct Lnode
    {
        int data;
        list next = NULL;
    };
    int howlong(list x)
    {
        int j = 1;
        list p = x;
        while (p != NULL)
        {
            p = p->next;
            j++;
        }
        return j;
    }
    list find_it_by_position(list x, int position)
    {
        int i = 0;
        list p = x;
        while (p != NULL && i < position) {
            p = p->next;
            i++;
        }
        if (i == position)
            return p;
        else
            return NULL;
    }
    list find_it_by_target(list x, int target)
    {
        list p = x;
        while (p && p->data != target)
        {
            if (p->data == target) 
                return p;
            p = p->next;
        }
        return  NULL;
    }
    list insert(list x, int target, int position)
    {
        list s, p;
        if (position == 0)
        {
            s = (list)malloc(sizeof(struct Lnode));
            s->data = target;
            s->next = x;
            return s;
        }
        s = find_it_by_position(x, position - 1);
        if (s == NULL)
        {
            cout << "wrong!";
            return NULL;
        }
        else
        {
            p = (list)malloc(sizeof(struct Lnode));
            p->data = target;
            p->next = s->next;
            s->next = p;
        }
        return x;
    }
    int main()
    {
        int x;
        cin >> x;
        list l = (list)malloc(sizeof(struct Lnode));
        l->next = NULL;   //这里做了修改
        for (int i = 1; i <= x; i++)
        {
            int q;
            cin >> q;
            insert(l, q, i);
        }
        cout << howlong(l)<<endl;
        cout << find_it_by_position(l, 3)->data;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月26日
  • 已采纳回答 8月18日
  • 修改了问题 8月17日
  • 创建了问题 8月17日

悬赏问题

  • ¥15 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?