Maison > Questions et réponses > le corps du texte
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.经常查看一些临时变量会看到类似的情况,以及我产生这种问题的原因。提前感谢帮助。
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;
}