c++ 双向链表

来源:互联网 发布:mac dock栏美化 编辑:程序博客网 时间:2024/04/29 14:22
#include <iostream>#include <string>using namespace std;class Node{private:string name;Node* pre;//前指针Node* las;//后指针public://构造函数,初始化都要为空Node(){name= "";pre= NULL;las= NULL;}//set函数void set_name(string name){this->name = name;}void set_pre(Node* node){pre = node;}void set_las(Node* node){las = node;}//get函数string get_name(){return name;}Node* get_pre(){return pre;}Node* get_las(){return las;}};class DLL{private:Node* Head;Node* Tail;public:DLL(){Head= new Node();//先开辟头结点}~DLL()//析构函数{cout<<"结点已全部释放!"<<endl;Node* temp1 = Head;Node* temp2 = Head;while(temp1 != NULL){temp2 = temp1->get_las();delete temp1;temp1 = temp2;}}void CreateList();void ftol_List();//前到后遍历void ltof_List();//后到前遍历};void DLL:: CreateList(){cout<<"请输入姓名,以###结束:"<<endl;Node* t = NULL;string name;while(cin>>name,name != "###"){Node* temp = new Node();temp->set_name(name);//设置名字temp->set_las(Head->get_las());//设置为指针temp->set_pre(Head);//设置首指针Head->set_las(temp);if(t != NULL){t->set_pre(temp);}else{Tail = temp;//设置尾指针}t = temp;}}void DLL::ftol_List(){Node* temp = Head->get_las();while(temp != NULL){cout<<temp->get_name()<<"  ";temp = temp->get_las();}cout<<endl;}void DLL::ltof_List(){Node* temp = Tail;while(temp != Head){cout<<temp->get_name()<<"  ";temp = temp->get_pre();}cout<<endl;}int main(){DLL list1;list1.CreateList();cout<<"前->后"<<endl;list1.ftol_List();cout<<"后->前"<<endl;list1.ltof_List();return 0;}

原创粉丝点击