注册 登录
编程论坛 C++教室

麻烦帮忙菜鸟解答一下

gencong 发布于 2012-03-14 01:04, 367 次点击
#include <iostream>

using namespace std;

class dlink
{
private:
    int num;
    dlink *pre;
    dlink *suc;
   
public:
    dlink()
    {
        pre = NULL;
        suc = NULL;
    }

    void SetNum(int anit)
    {
        num = anit;
    }

    void Append(dlink *p);
};


void dlink::Append(dlink *p)
{
    p->suc = suc;
    p->pre = this;
    this->suc->pre = p;
    suc = p;
}

dlink * list_head;

void main()
{
    dlink d, d1, d2, *p1, *p2;
    d.SetNum(0);
    d1.SetNum(1);
    d2.SetNum(2);

    list_head = &d;
    p1 = &d1;
    p2 = &d2;
    list_head->Append(p1);
    list_head->Append(p2);
}
不是很明白这个双链表的中void dlink::Append(dlink *p)这个函数中的四条语句分别是代表什么的,是怎样在链表内添加成员的,麻烦各位高手解答一下,不甚感激!

4 回复
#2
nicum2012-03-16 22:40
自己在本子上画三个图不就出来了么
#3
gencong2012-03-16 23:47
回复 2楼 nicum
不是很明白是这四句是什么含义,能不能帮忙解释一下,谢谢!
p->suc = suc;
p->pre = this;
this->suc->pre = p;
suc = p;
#4
nicum2012-03-17 20:51
void dlink::Append(dlink *p)
{
    p->suc = suc;
    p->pre = this;
    this->suc->pre = p;
    suc = p;
}
这个函数是把p插入到后继结点
    p->suc=suc;//p的后继结点是此节点的后继结点
    p->pre=this;//p的前驱结点是此节点
    this->suc->pre=p;//此节点的原后继结点的前驱为p结点(可以写成 suc->pre=p)
    suc=p;//此节点的后继结点为p结点
#5
gencong2012-03-18 21:31
回复 4楼 nicum
多谢你,我明白了,谢谢!
1