关于双向循环链表的问题,求助

IT保安 2014-12-23 10:34:40
求助,我写了一段双向循环链表的代码,但是测试有问题,不能达到预期的效果,请大家帮我看看!
代码如下:
头文件:
struct ListNode
{
public:
ListNode* rLink;
ListNode* lLink;
int data;
ListNode(int x);
ListNode();
};
ListNode::ListNode(int x)
{
data = x;
}
ListNode::ListNode()
{
data = 0;
}
class List //链表类
{
public:
ListNode* first;
public:
List()
{
first = new ListNode();
first->rLink = first->lLink = first;
}
void Insert(ListNode*,int);
void Display();
};

void List::Insert(ListNode* current, int InsertRight)//往指定结点的右边插入
{
ListNode* temp = new ListNode(InsertRight); //创建结点
temp->rLink = current->rLink;
temp->lLink = current;
current->rLink = temp;
current->rLink->lLink = temp;
}

void List::Display()
{
ListNode* temp = first; //保存
while(true)
{
for(int i = 0;i<=100;++i)
{

printf("结点%d: data=%d,address=%x,rLink_address=%x,lLink_address=%x\
\n",i,first->data,first,first->rLink,first->lLink);
first = first->rLink;
if(first == temp)
break;
}
first = temp; //恢复
break;
}
}


源文件:
int main(int argc, char* argv[])
{

List p;
p.Insert(p.first,1);
p.Insert(p.first,2);
p.Insert(p.first,3);
p.Insert(p.first,4);
p.Display();

return 0;



调用display()方法,我希望看到的数据,1:结点中的数据,2:结点的右域 都能正确的显示出来
但是结点的左域就是不能正确的显示,总是显示结点自身,不知道问题出在哪里,求助!
不能上传图片啊,好烦啊 !
...全文
80 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧