(003)线性链表类

(003)线性链表类
                                                                        2014/12/7        by jxlijunhao
#ifndef	LINKED_LIST_H
#define LINKED_LIST_H

#include
using namespace std;

//定义节点的类型
template
struct node
{
	T data;
	node *next;
};

//定义线性表类
template
class linked_list
{
private:
	node *head;
public:
	linked_list();  //构造函数,建立空链表
	int flag_linked_list();//检测单链表的状态
	void print_linked_list();//打印链表
	void add_linked_list(T data);//将新的数据加入的表头
	T delete_head(); //删除链表头的元素
	void insert_linked_list(T,T); //在包含元素X的结点前插入新元素b
	void delete_linked_list(T); //删除包含元素x的结点
};


//构造函数,建立空链表
template
linked_list::linked_list()
{
	head=NULL;
}

//检测单链表的状态
template
int linked_list::flag_linked_list()
{
	if (head->next==NULL) return 0; //表示链表为空
	return 1;
}

//打印链表
template
void linked_list::print_linked_list()
{
	node *p;
	p=head;
	if (head->next==NULL)
	{
		cout<<"为空链表"<data<next;
	} while (p!=NULL);
}

//将新的数据加入的表头
template
void linked_list::add_linked_list(T data)
{
	node *p;
	p=new node;
	p->data=data;
	p->next=head;
	head=p;
}

 //删除链表头的元素
template
T linked_list::delete_head()
{
	T data;
	node *p;
	if (head==NULL)
	{
		cout<<"链表为空,无法删除"<data;
	head=p->next;
	delete p;
	return data;
}


//在包含元素X的结点前插入新元素b
template
void linked_list::insert_linked_list(T x,T b)
{
	node *p,*q;
	p=new node;
	p->data=b;

	//当链表为空时
	if (head==NULL)
	{
		head=p;
		p->next=NULL;
		return;
	}
	//当只用一个表头时
	if (head->data==x)
	{
		p->next=head;
		head=p;
		return;
	}
	q=head;
	while (q->next!=NULL&&((q->next)->data))!=x)
	{
		q=q->next;
	}
	p->next=q->next;
	q->next=p;
	return;
}

//删除包含元素x的结点
template
void linked_list::delete_linked_list(T x)
{
	node *p,*q;
	if (head==NULL)
	{
		cout<<"链表为空"<data==x)
	{
		p->next=head;
		delete head;
		head=p;
		exit(0);
	}
	q=head;
	while (q->next!=NULL&&((q->next)->data)!=x)
	{
		q=q->next;
	}
	if (q->next==NULL) exit(0);
	p=q->next;
	q->next=p->next;
	delete p;
	
}
#endif 

#include "linked_list.h"
int main()
{
	linked_lists;

	s.add_linked_list(10);
	s.add_linked_list(20);
	s.add_linked_list(30);
	s.add_linked_list(40);
	s.print_linked_list();

	s.delete_linked_list(10);
	s.print_linked_list();
}


你可能感兴趣的:(数据结构与算法)