线性链表类

线性链表类:文件名 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
请按任意键继续. . .



 

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