| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:关于栈的顺序存储问题
只看楼主 加入收藏
cygsslazio
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-11-20
收藏
 问题点数:0 回复次数:2 
关于栈的顺序存储问题

关于栈的顺序存储问题

谁帮我编写一个栈的顺序存储实现

[此贴子已经被作者于2005-12-13 17:35:57编辑过]

搜索更多相关主题的帖子: 顺序 编写 
2005-12-13 17:32
flame
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-12-15
收藏
得分:0 
template <class SType>
class stack
{
public:
stack(int size);
~stack()
{
delete []stck;
}
void push(SType i);
SType pop();
private:
int tos,length;
SType *stck;
};
template <class SType>
stack<SType>::stack(int size)
{
stck=new SType[size];
if(!stck)
{
cout<<"Cannot allocate stack.\n";
exit(1);
}
length=size;
tos=0;
}
template <class SType>
void stack<SType>::push(SType i)
{
if(tos==length)
{
cout<<"Stack is full.\n";
return;
}
stck[tos]=i;
tos++;
}
template <class SType>
SType stack<SType>::pop()
{
if(tos==0)
{
cout<<"Stack underflow.\n";
return 0;
}
tos--;
return stck[tos];
}

随风飘逝,叶子与我飞翔,随海飘逝,鱼儿与我追逐,随心飘逝,却只有寂寞与我相伴!
2005-12-16 13:13
linaqn
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-12-16
收藏
得分:0 
#include<iostream.h>
template<class T>
class L
{
private :
	T *data;
	int msize, currlen;
public:
	L(int size=10);
	~L(){ delete[] data;}
	int Find(T x);
	bool empty();
	Insert(T x,int i);
	remove(T x,int i);
	void print();
};

template<class T>
L<T>::L(int size)
{
	if(size<=0)
		cout<<"waring:输入错误,顺序表元素个数不能小于零"<<endl;
	msize=size;
    currlen=0;
	data=new T [msize];
}
template<class T>
bool L<T>::empty()
{
	if(currlen==0)
		return 0;
	else return 1;
}

template<class T>
int L<T>::Find(T x)
{
    if (!empty())
		cout<<"waring:这是一个空表,请输入数据"<<endl;
	
	for(int i=1;i<=currlen&&data[i-1]!=x;i++);
	cout<<"查找成功,very good!"<<endl;
	return i;
    cout<<"sorry,找不到你给的数据!!"<<endl;
	return 0;

}
template<class T>
L<T>::Insert(T x,int i)
{ 
    if(i<=0||currlen==msize)
		cout<<"error:输入错误或空间已满,不能这样的啦!"<<endl;
	else
	{
	for(int j=currlen;j>i;j--)
	data[j]=data[j-1];
	data[i-1]=x;
	currlen++;}
}
template<class T>
L<T>::remove(T x,int i)
{
    if(i<0||i>currlen)
		cout<<"error:输入错误或不能这样的啦!"<<endl;
	int j=Find(x);
    if(j>0)
	{
	for(j;j<=currlen;j++)
		data[j-1]=data[j];
	currlen--;
	cout<<"\""<<x<<"\""<<"已删除"<<endl;
	}
}
template<class T>
 void L<T>::print()
{int i=1;
for(i;i<=currlen;i++)
cout<<data[i-1]<<" "<<endl;
}
   
void main()
{
   L<int> a(8);
	a.Insert(1,1);
	a.Insert(2,2);
	a.Insert(3,3);
	a.Insert(4,4);
	a.Insert(5,5);
	a.Insert(6,6);
	a.Insert(7,7);
	a.Insert(8,8);
	a.print();
	int i=a.Find(3);
	cout<<i<<endl;
	a.remove(3,3);
	cout<<"删除后的顺序表 :"<<endl;
	a.print();
}

坟墓旁的两个十字架难道就是c++?????????
2005-12-17 11:43
快速回复:关于栈的顺序存储问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015541 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved