線性鏈表類:文件名 Linked_List.h
#include <iostream>
using namespace std;
template <class T>
//定義結點類型
struct node
{
T d;
node *next;
};
template <class T>//T爲虛擬類型
class Linked_List
{
private:
node<T> *head;
public:
Linked_List();
int flag_Linked_List();
void prt_Linked_List();
void ins_Linked_List(T);
T del_Linked_List();
};
//建立空鏈表
template <class T>
Linked_List<T>::Linked_List()
{
head=NULL;
return;
}
//檢測單鏈表狀態
template <class T>
int Linked_List<T>::flag_Linked_List()
{
if(head==NULL)return(0);
return (1);
}
//從頭指針開始掃描輸出鏈表中的元素
template <class T>
void Linked_List<T>::prt_Linked_List()
{
node<T> *p;
p=head;
if(p==NULL)
{
cout<<"空鏈表"<<endl;return;
}
do{
cout<<p->d<<endl;
p=p->next;
}while(p!=NULL);
return;
}
//新元素插入到鏈頭
template <class T>
void Linked_List<T>::ins_Linked_List(T b)
{
node<T> *p;
p=new node<T>;
p->d=b;
p->next=head;
head=p;
return;
}
//刪除鏈頭元素
template <class T>
T Linked_List<T>::del_Linked_List()
{
T y;
node<T> *q;
if(head==NULL)
{
cout<<"空鏈表"<<endl;
return(0);
}
q=head;
y=q->d;
head=q->next;
delete q;
return y;
}
2.應用實例
#include "Linked_List.h"
#include<stdlib.h>
int main()
{
Linked_List<int> s;
cout<<"第一次從頭指針開始掃描輸出單鏈表s中元素:"<<endl;
s.prt_Linked_List();
s.ins_Linked_List(10);
s.ins_Linked_List(20);
s.ins_Linked_List(30);
s.ins_Linked_List(40);
cout<<"第二次從頭指針開始掃描輸出單鏈表s中元素:"<<endl;
s.prt_Linked_List();
if(s.flag_Linked_List())
cout<<"刪除的鏈頭元素"<<s.del_Linked_List()<<endl;
if(s.flag_Linked_List())
cout<<"刪除的鏈頭元素"<<s.del_Linked_List()<<endl;
cout<<"第三次從頭指針開始掃描輸出單鏈表s中元素:"<<endl;
s.prt_Linked_List();
system("pause");
return 0;
}
3.實驗結果
第一次從頭指針開始掃描輸出單鏈表s中元素:
空鏈表
第二次從頭指針開始掃描輸出單鏈表s中元素:
40
30
20
10
刪除的鏈頭元素40
刪除的鏈頭元素30
第三次從頭指針開始掃描輸出單鏈表s中元素:
20
10
請按任意鍵繼續. . .