jazm_blk 2017-12-05 12:35 采纳率: 100%

# 关于c++中的双向循环链表

`````` #pragma once
#define V_TPLS template<class T>\
void MyList<T>::

template<class T>
class MyList
{
T data;
MyList* next, *back;
public:
MyList()
{
next = this;
back = this;
data = 0;
}
//在链表后插入数据
void push_back(T data);
//在链表前插入数据
void push_front(T data);//前继
//清空整个链表
void _clear()
{
while (this->next!=this)
{
MyList *temp = this->next;
this->next = this->next->next;
delete temp;
}
}

void put()
{
MyList *p = this->next;
while (p!=this)
{
cout << p->data << ends;
p = p->next;
}
}

~MyList()
{ _clear(); }
};

//在链表后插入数据
V_TPLS push_back(T data)
{
MyList *temp = new MyList;
temp->data = data;
static MyList*p_n = this;
temp->next = p_n->next;
temp->back = p_n;
p_n->next = temp;
p_n = p_n->next;
this->back = temp;
}
//在链表前插入数据
V_TPLS push_front(T data)
{
MyList *temp = new MyList;
temp->data = data;
temp->next = this->next;
temp->back = this;
this->next->back = temp;
this->next = temp;
}

``````

• 写回答

#### 3条回答默认 最新

• God_Gray 2017-12-05 15:00
关注

_clear() push_back() push_front()函数都有问题，改了三个函数的代码，你参照看下。

``````    void _clear()
{
while (this->next != this)
{
MyList *temp = this->next;
this->next = temp->next;
temp->next->back = temp->back;

temp->next = temp;
temp->back = temp;
delete temp;
}
}

//在链表后插入数据
V_TPLS push_back(T data)
{
MyList* newList = new MyList;
newList->data = data;

MyList* temp = this->next;
this->next = newList;
newList->next = temp;
newList->back = this;
temp->back = newList;
}

//在链表前插入数据
V_TPLS push_front(T data)
{
MyList* newList = new MyList;
newList->data = data;

MyList* temp = this->back;
this->back = newList;
newList->back = temp;
newList->next = this;
temp->next = newList;
}
``````
本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥15 angular项目错误
• ¥20 需要帮我远程操控一下，运行一下我的那个代码，我觉得我无能为力了
• ¥20 有偿：在ubuntu上安装arduino以及其常用库文件。
• ¥15 请问用arcgis处理一些数据和图形，通常里面有一个根据点划泰森多边形的命令，直接划的弊端是只能执行一个完整的边界，但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
• ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题，请问该如何解决呢？
• ¥750 关于一道数论方面的问题，求解答！(关键词-数学方法)
• ¥200 csgo2的viewmatrix值是否还有别的获取方式
• ¥15 Stable Diffusion，用Ebsynth utility在视频选帧图重绘，第一步报错，蒙版和帧图没法生成，怎么处理啊
• ¥15 请把下列每一行代码完整地读懂并注释出来
• ¥15 寻找公式识别开发，自动识别整页文档、图像公式的软件