線性鏈表類

線性鏈表類:文件名 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
請按任意鍵繼續. . .



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章