为什么我的双向链表的插入不了一个数?
// 双向链表的基本操作.cpp : 定义控制台应用程序的入口点。//
#include "stdafx.h"
#include<time.h>
#include<iostream>
using namespace std;
#define N 5
typedef struct dulnode
{
int data;
dulnode *prior;
dulnode *next;
}dulnode,*dulinklist;
void createlist(dulinklist &l)
{
dulinklist p;
l = new dulnode;
l->next = NULL;
srand((int)(0));
for (int i = 0; i < N; i++)
{
p = new dulnode;
p->data = rand() % 100;
p->next = l->next;
l->next = p;
}
}
void printlist(dulinklist &l)
{
dulinklist p = l->next;
while (p)
{
cout << p->data << '\t';
p = p->next;
}
cout << endl;
}
dulinklist getelem(dulinklist &l, int i)
{
dulinklist p = l->next;
int j = 1;
while (p&&j < i)
{
p = p->next;
++j;
}
if (!p&&j>i)
exit(0);
return p;
}
int listinsert(dulinklist &l, int i, int e)
{
dulinklist p,s;
if (!(p = getelem(l, i)))
exit(0);
s = new dulnode;
s->data = e;
s->prior = p->prior;
p->prior->next = s;
s->next = p;
p->prior = s;
return 1;
}
int main()
{
dulinklist l;
int e,i;
createlist(l);
printlist(l);
cout << "输入要插入的数:";
cin >> e;
cout << "输入要插入的位置:";
cin >> i;
listinsert(l, i, e);
printlist(l);
return 0;
} creatlist时节点的prior指针没有赋值。 LeoChou 发表于 2016-4-13 10:51
creatlist时节点的prior指针没有赋值。
是赋值为NULL对吧,可还是不行 createlist时,你的prior指针呢?所有的节点的prior都被你指向了null
而你插入的时候,就是靠prior定位的
s->data = e;
s->prior = p->prior;//从这时候开始,就出错了,s->prior =NULL;
p->prior->next = s; // p->prior->next = NULL->next;报错,后面的我就不写了
s->next = p;
p->prior = s; muyu0096 发表于 2016-4-13 13:48
createlist时,你的prior指针呢?所有的节点的prior都被你指向了null
而你插入的时候,就是靠prior定位的
...
那prior结点应该赋值什么? 你构造链表,当然是和头指针一样,把它们链接起来啊 muyu0096 发表于 2016-4-14 08:09
你构造链表,当然是和头指针一样,把它们链接起来啊
那是l->prior=l->next=l?
页:
[1]