⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lstack.h

📁 C、C++语言实现的数据结构重要算法和程序 比较全。
💻 H
字号:
//--------------------------//
//                          //
//          链栈类          //
//                          //
//--------------------------//

#if !defined(_INC_LSTACK_OO)
#define _INC_LSTACK_OO

#include<stdlib.h>
#include "D:\vc_h_file\Node.h"

template<class T>
class LStack
{
 private:
	 Node<T> *top;
	 int size;
 public:
	 LStack();
	 ~LStack();
     int Size()const;
     int Empty()const;
     T Peek()const;
     void Push(T item);
     T Pop();
     void Clear();
};

template<class T>
LStack<T>::LStack()
{
	top=new Node<T>;
	if(top==NULL)
	{
		cerr<<"overflow\n"<<endl;
		exit(1);
	}
	size=0;
}

template<class T>
LStack<T>::~LStack()
{
	while(top->NextNode()!=NULL)
		top->DeleteAfter();
	delete top;
}

template<class T>
int LStack<T>::Size()const
{
	return(size);
}

template<class T> 
int LStack<T>::Empty()const
{
	if(size==0)
		return(1);
	 return(0);
}

template<class T>
T LStack<T>::Peek()const
{
	Node<T> *ptr;
	if(size==0)
	{
		cerr<<"Stack is empty!\n"<<endl;
		exit(1);
	}
	ptr=top->NextNode();
	return(ptr->data);
}

template<class T> 
void LStack<T>::Push(T item)
{
	top->InsertAfter(item);
	size++;
}

template<class T>
T LStack<T>::Pop(void)
{
	Node<T> *ptr;
	T item;
	if(size==0)
	{
		cerr<<"Stack is empty!\n"<<endl;
		exit(1);
	}
	ptr=top->NextNode();
	item=ptr->data;
	top->DeleteAfter();
	size--;
	return(item);
}

template<class T>
void LStack<T>::Clear()
{
	while(top->NextNode()!=NULL)
		top->DeleteAfter();
    size=0;
}

#endif //_INC_LSTACK_OO

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -