Heim  >  Fragen und Antworten  >  Hauptteil

c++ - C语言中取出的数据是一个很大的负数

1.我写了一个链表,在测试初始化的功能,发现输入的数据域是-842150451
有点像内存溢出的感觉,可能是取数据取得有问题。
2.代码如下

#include <iostream>
using namespace std;

typedef int ElemType;
typedef struct LNode {
    ElemType data;
    struct LNode *next;
}LNode, * LinkList;

//逆位序建立单链表
int CreateList_L(LinkList &L, int n) {
    //给头结点分配空间
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;

    //建立一个带头结点的单链表
    for (int i = n; i > 0; i--) {
        LinkList p;
        p = (LinkList)malloc(sizeof(LNode));
        p->next = L->next;
        L->next = p;
    }
    return 0;
}
int ListInsert(LinkList &L, int i, ElemType e) {
    LinkList p;
    p = L;
    int j = 0;

    //寻找第i-1个节点
    while (p&&j<i-1)
    {
        p = p->next;
        ++j;
    }
    if (!p || j > i - 1) {
        return -1;
    }
    //生成新节点
    LinkList s;
    s = (LinkList)malloc(sizeof(LNode));
    s->data = e;
    s->next = p->next;
    p->next = s;
    return 0;
}

int main()
{
    LinkList L;
    CreateList_L(L, 3);
    cout << "L 的地址 " << &L << endl;
    for (int i = 0; i < 3; i++) {
        LinkList q;
        q = L;
        int data;
        cout << "请输入数据" << endl;
        cin >> data;
        q->data = data;
        q = q->next;
    }
    //ListInsert(L, 1, 2);
    //ListInsert(L, 2, 9);
    LinkList p;
    p = L;
    while (p->next != NULL) {
        p = p->next;
        cout << "输出p的data " << p->data << endl;
    }
    system("pause");
    return 0;
}

3.运行结果

4.经常查看一些临时变量会看到类似的情况,以及我产生这种问题的原因。提前感谢帮助。

迷茫迷茫2764 Tage vor1327

Antworte allen(1)Ich werde antworten

  • PHPz

    PHPz2017-04-17 15:04:31

    基本逻辑错误

    LinkList q; // 这两句需要在循环外吧?
    q = L;
    for (int i = 0; i < 3; i++) {
        q = q->next; // 你的链表有个所谓的头节点,所以第一个节点没用吧?
        int data;
        cout << "请输入数据" << endl;
        cin >> data;
        q->data = data;
    }

    Antwort
    0
  • StornierenAntwort