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

【字号: 日期:2023-04-04浏览:38作者:雯心

问题描述

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.运行结果

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

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

问题解答

回答1:

基本逻辑错误

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

相关文章: