数据结构:双向链表list的表头/尾添加数据、链表显示、链表清空
来源:互联网 发布:回声电影软件 编辑:程序博客网 时间:2024/05/17 17:42
#include<iostream.h>//定义节点(数据对象)的接口class Node{ //声明list类为本类的友元类 friend class list;//私有成员 private: int Data; //节点数据 Node *previous; //前趋指针 Node *next; //后继指针};//定义双向链表list的接口声明class list{//私有成员 private: Node *Head; //链表头指针 Node *Tail; //链表尾指针//定义接口函数public: //构造函数 list(); //析构函数 ~list(); //从链表尾后添加数据 void Build_HT(int Data); //从链表前头添加数据 void Build_TH(int Data); //从头到尾显示数据 void list::Display_HT(); //从尾到头显示数据 void list::Display_TH(); //清除链表的全部数据 void Clear();};//main()函数测试双向链表int main(void){ list list1; int i; //从尾添加数据 cout<<"Add to the back of the list1:"<<endl; for (i=1;i<=20;i=i+2) { list1.Build_HT(i); cout<<i<<" "; } cout<<endl; //从头添加数据 cout<<"Add to the front of the list1:"<<endl; for (i=0;i<=20;i=i+2) { list1.Build_TH(i); cout<<i<<" "; } cout<<endl; //显示链表 list1.Display_HT(); list1.Display_TH(); return 0;}//list类函数的定义//构造函数的定义list::list(){ //初值 Head=0; Tail=0;}//析构函数的定义list::~list(){ Clear(); }//从链表尾后添加数据void list::Build_HT(int Data){ Node *Buffer; Buffer=new Node; Buffer->Data=Data; if(Head==0) { Head=Buffer; Head->next=0; Head->previous=0; Tail=Head; } else { Tail->next=Buffer; Buffer->previous=Tail; Buffer->next=0; Tail=Buffer; }}//从链表前头添加数据void list::Build_TH(int Data){ Node *NewNode; NewNode=new Node; NewNode->Data=Data; if(Tail==0) { Tail=NewNode; Tail->next=0; Tail->previous=0; Head=Tail; } else { NewNode->previous=0; NewNode->next=Head; Head->previous=NewNode; Head=NewNode; }}//从头到尾显示数据void list::Display_HT(){ Node *TEMP; TEMP=Head; cout<<"Display the list from Head to Tail:"<<endl; while(TEMP!=0) { cout<<TEMP->Data<<" "; TEMP=TEMP->next; } cout<<endl;}//从尾到头显示数据void list::Display_TH(){ Node *TEMP; TEMP=Tail; cout<<"Display the list from Tail to Head:"<<endl; while(TEMP!=0) { cout<<TEMP->Data<<" "; TEMP=TEMP->previous; } cout<<endl;}//清除链表的全部数据void list::Clear(){ Node *Temp_head=Head; if (Temp_head==0) return; do { Node *TEMP_NODE=Temp_head; Temp_head=Temp_head->next; delete TEMP_NODE; } while (Temp_head!=0);}
文献来源:
UNDONER(小杰博客) :http://blog.csdn.net/undoner
LSOFT.CN(琅软中国) :http://www.lsoft.cn
- 数据结构:双向链表list的表头/尾添加数据、链表显示、链表清空
- 动态表头的双向链表
- 双向链表(链表尾加数据链表头加数据删除销毁)
- 带表头节点的双向循环链表编程
- 带表头结点的双向循环链表
- 带表头结点的双向循环链表
- 带表头结点的双向循环链表
- 带表头结点的双向循环链表
- 带表头节点的循环双向链表(头插,尾插,中间插,清除,前向显示,后向显示)
- 不带表头的单向链表,带表头的单向链表,带表头的单向循环链表,带表头的双向循环链表。
- 双向链表list
- 数据结构--双向链表
- 数据结构-双向链表
- 数据结构-----双向链表
- 数据结构-双向链表
- 【数据结构】双向链表
- 双向链表 - 数据结构
- 数据结构--双向链表
- 数据结构:stack栈的初始化、入栈、出栈及显示栈元素
- C# DataTable基本用法
- Jquery 常用方法
- test
- 求两个字符串的最长的连续公共子串
- 数据结构:双向链表list的表头/尾添加数据、链表显示、链表清空
- OpenGL Cube Map Texturing
- 前端控制器模式的介绍,第1部分
- javascript基础知识
- android事件监听回调机制
- WebRTC将如何影响当前的移动互联网?
- 前端控制器模式的介绍,第2部分
- 程序员成熟的标志
- python excel lib (xlwt)