已经有了一个顺序表的头文件,如何建立一个顺序栈?

daiby1984 2003-11-06 10:35:35
我想建一个顺序栈CsqQuene.h ,该怎么办?听说要用到继承和派生。谁能给个答复?有源代码最好。谢谢!
我的顺序表的头文件名为Csqlist.h ,代码如下:
template <class T>
class Csqlist
{
public:
int m_length;
int m_listsize;
int m_incremmentsize;
T *A;
Csqlist();

Csqlist(int listsize,int incremmentsize);
int listlength();

T getelem(int i);
void setelem(int i,T e);
int locateelem(T e);
void listinsert(int i,T e);
T listdelete(int i,T &e);
void putelem(int i,T &e);
void increment();
virtual ~Csqlist();
};
#endif // !defined(AFX_SQLIST_H__24A9B249_AC6E_496E_B676_65798578F521__INCLUDED_)



template <class T>
void Csqlist<T>::setelem(int i,T e)
{
A[i-1]=e;
}


template <class T>
Csqlist<T>::Csqlist()
{
m_listsize=100;
m_length=0;
A=new T[m_listsize];
m_incremmentsize=20;
}

template <class T>
Csqlist<T>::~Csqlist()
{
delete []A;
}

template <class T>
Csqlist<T>::Csqlist(int listsize,int incremmentsize)
{
m_listsize=listsize;
m_incremmentsize=incremmentsize;
A=new T[m_listsize];
m_length=0;
}
template <class T>
int Csqlist<T>::listlength()
{
return m_length;
}
template <class T>
T Csqlist<T>::getelem(int i)
{
return A[i-1];
}

template <class T>
int Csqlist<T>::locateelem(T e)
{
int i=1;
T *p=A;
while(i<=m_length&&*(p++)!=e) ++i;
if(i<=m_length) return i;
else return 0;
}

template <class T>
void Csqlist<T>::listinsert(int i,T e)
{
if(i<1||i>m_length+1)
cout<<"i值不合法"<<endl;
if(m_length>=m_listsize)
increment();

T *a=new T[m_listsize+m_incremmentsize];

for(int j=0;j<i-1;j++)
a[j]=A[j];
int k=i-1;
a[k]=e;
for(;k<m_length;k++)a[k+1]=A[k];
delete[] A;
A=a;
++m_length;
}

template <class T>
void Csqlist<T>::increment()
{
T *a=new T[m_listsize+m_incremmentsize];
for(int i=0;i<m_length;i++)
{
a[i]=A[i];
}
delete []A;
A=a;
m_listsize+=m_incremmentsize;
delete []a;
}

template <class T>
T Csqlist<T>::listdelete(int i,T &e)
{
if((i<1)||(i>m_length))
cout<<"i不合法"<<endl;
T *p=&(A[i-1]);
e=*p;
T *q=A+m_length-1;
for(++p;p<=q;++p) *(p-1)=*p;
--m_length;
return e;
}

请高手帮个忙!谢了!
...全文
111 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,375

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧