声明双向链表类
#include "iostream"
#include "string"
using namespace std;
class Dlink
{
Dlink *head;
Dlink *next;//连接下一个节点的指针
Dlink *prior; //连接上一个节点的指针
Dlink *p;
Dlink *p2;
string name;
public:
Dlink()
{
name="“吴香玉”";
}
Dlink* build();
Dlink* D_delete(Dlink *HEAD);
void show(Dlink *HEAD);
void insert(Dlink *HEAD);
};
string sentence[8]={"赵","兄","托","我","办","点","事","0"};
构建双向链表
Dlink* Dlink::build()//构建双向链表
{
int i=0;
head=this;
head->prior=NULL;//因为头节点是没有上一个节点的,所以将头节点的prior指向NULL
p=head;
while(p->name!="0")
{
p2=new Dlink;
p2->name=sentence[i];
p2->prior=p;//将新创建的节点的prior指向上一个节点
p->next=p2;//旧的节点的next指向新创建的节点
p=p2;//p移向新的节点
i++;
}
return head;
}
void Dlink::show(Dlink *HEAD)
{
p=HEAD;
while(p->name!="0")
{
cout<<p->name;
p=p->next;
}
cout<<endl;
}
Dlink* Dlink::D_delete(Dlink *HEAD)//删除头节点
{
(HEAD->next)->prior=NULL;//只需要将头节点的下一个节点的prior指针指向NULL
return HEAD->next;//此时头节点的下一个节点也就成了头节点
}