南城啊呀呀呀 2019-05-04 10:10 采纳率: 0%
浏览 710

用C++创建单链表,运行到p->next=(*list)->next;时显示发生访问冲突

图片说明
代码如下

#include<iostream>
using namespace std;
struct Node//创建单链表结构体
{
    int date;
    Node *next;
};
int list_headinsert(Node **list, int a[], int n);
int getlist(Node *list, int i);
int main()
{
    int *p, n;
    cout << "请输入n=";
    cin >> n;
    p = new int[n];
    for (int i = 0; i < n; i++)
    {
        cout << "请输入第" << i << "个元素=";
        cin >> p[i];
    }
    Node **list=new Node*;//创建一个空表;
    if (*list == NULL)
    {
        cout << "空间申请失败";
        return 0;
    }
    list_headinsert(list, p, n);
    for (int i = 1; i < n; i++)//按顺序导出数据元素;
        cout << getlist(*list, i) << ' ';
    return 1;
}
int list_headinsert(Node **list, int a[], int n)//头插法新建带头结点的单链表,并将数组元素导入
{
    Node *p = new Node;
    p->next = NULL;
    for (int i = n; i >1; i--)
    {
        Node*p = new Node;
        p->date = a[i];
        p->next = (*list)->next;
        (*list)->next = p;
    }
    return 1;
}
int getlist(Node *list, int i)//查找链表数据元素
{
    Node *p = list->next;
    int j = 0;
    if (p == NULL)
    {
        cout << "空表";
            return 0;
    }
    while (p&& j < i)
    {
        p = p->next;
        j++;
    }
    return p->date;
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2019-05-04 10:14
    关注

    你看到 0xCDCDCDCD 了么?这是VC++很方便的一点,它的调试版的程序,当你用new/malloc分配内存的时候,它会把这块内存全部用0xCD填充。
    所以你看到这个,想都不用想就知道了,list->next这个指针没有初始化。
    你无论new或者malloc创建了Node,都要记得加上node->next = NULL

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名