📄 -
字号:
#include "iostream.h"
template <class T>
class node
{
public:
node()
{cout<<"单元生成!"<<endl;}
~node()
{cout<<"单元被删除!"<<endl;}
T date;
node<T> *next;
};
template <class T>
class list
{
public:
list(void);
~list(void);
bool ins(T,int);
bool del(int);
void add(T);
void lista(void);
void listo(int);
void clear(void);
int searchs(T);
int size;
node<T> *head;
node<T> *now;
};
template <class T>
list<T>::list(void)
{
head=new node<T>();
head->date='H';
head->next=NULL;
now=head;
size=0;
cout<<"单链表构造成功!"<<endl;
}
template <class T>
list<T>::~list()
{
clear();
delete head;
}
template <class T>
void list<T>::add(T x)
{
int n1;
n1++;
now->next=new node<T>();
now=now->next;
now->date=x;
now->next=NULL;
size++;
}
template <class T>
void list<T>::clear(void)
{
int i;
for(i=1;i<=size;)
del(1);
}
template <class T>
bool list<T>::del(int i)
{
int ii=0;
node<T> *n=head,*n1;
if (i<=0||i>size) return 0;
while(ii++,ii<=size)
{
n1=n->next;
if (ii==i)
{
if (n->next==now)
{
now=n;
}
n->next=n1->next;
delete n1;
size--;
return 1;
}
n=n1;
}
}
template <class T>
bool list<T>::ins(T x,int i)
{
int ii=0,num;
node<T> *n=head,*n1;
if (i<0||i>size) return 0;
while(ii++,ii<size)
{
num=n->n;
if (n==i)
{
n1=new node<T>();
n1->date=x;
n1->next=n->next;
n->next=n1;
size++;
return 1;
}
n=n->next;
}
}
template <class T>
void list<T>::lista(void)
{
int i;
node<T> *n=head;
for(i=0;i<=size;i++)
{
cout<<"第["<<i<<"]节点的内容为:"<<n->date<<endl;
n=n->next;
}
}
template <class T>
void list<T>::listo(int x)
{
int i;
node<T> *n=head;
for(i=0;i<=size;i++)
{
if (i==x) cout<<"第["<<n->n<<"]节点的内容为:"<<n->date<<endl;
n=n->next;
}
}
template <class T>
int list<T>::searchs(T x)
{
int i;
node<T> *n=head;
for(i=1;i<=size;i++)
{
if (n->date==x) return n->n ;
n=n->next;
}
return 0;
}
template <class T>
class stacklist:public list<T>
{
public:
node<T> *top;
int topnum;
stacklist():list<T>()
{
top=head;
topnum=size;
cout<<"链式堆栈构造成功!"<<endl;
}
void push(T);
T peek(void);
};
template <class T>
T stacklist<T>::peek()
{
T x;
if (topnum==0 )
{
cout<<"已到栈底,请压栈:"<<endl;
return false;
}
else
{
cout<<"退栈成功!栈顶单元号是:"<<topnum<<"数据为:"<<top->date<<endl;
x=top->date;
del(topnum);
topnum=size;
top=now;
return x;
}
}
template <class T>
void stacklist<T>::push(T x)
{
add(x);
top=now;
topnum=size;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -