一个栈类的实现(链栈)
2009-03-18 17:24
393 查看
typedef struct LNode
{
int data;
struct LNode *next;
}LNode, *pLinkList;
//类的声明
class LinkList
{
private:
pLinkList m_pList;
int m_listLength;
public:
LinkList();
~LinkList();
bool InitList ();
bool DestroyList ();
bool ClearList();
bool IsEmpty ();
int GetLength ();
bool GetNode(int position, LNode** node);
int LocateElem(int elem);
bool SetNodeData(int position, int newData);
bool GetNodeData(int position, int &data);
bool InsertNode(int beforeWhich, int data);
bool DeleteNode(int position);
};
//类的实现
Stack::Stack():top(NULL)
{
//
}
Stack::Stack(const Stack& a_stack)
{
if (a_stack.top == NULL)
{
top =NULL;
}
else
{
StackNodePtr temp = a_stack.top;
StackNodePtr end;
end= new StackNode;
end->data = temp->data;
top =end;
//第一各节点已经创建,而且填充了数据
//现在,新的节点要在这个节点之后添加
temp=temp->link;
while(temp!=NULL)
{
end->link = new StackNode;
end=end->link;
end->data =temp->data;
temp =temp->link;
}
end->link =NULL;
}
}
Stack::~Stack()
{
char next;
while (top!=NULL)
next =pop();
}
BOOL Stack::isempty() const
{
return (top==NULL);
}
void Stack::push(char the_symbol)
{
StackNodePtr temNode = new StackNode;
temNode->data = the_symbol;
temNode->link = top;
top= temNode;
}
char Stack::pop()
{
if (top==NULL)
return 0;
char pResult = top->data;
StackNodePtr temNodePtr = top;
top=top->link;//top指针向下移动一位
delete temNodePtr; //释放那个节点的空间
}
{
int data;
struct LNode *next;
}LNode, *pLinkList;
//类的声明
class LinkList
{
private:
pLinkList m_pList;
int m_listLength;
public:
LinkList();
~LinkList();
bool InitList ();
bool DestroyList ();
bool ClearList();
bool IsEmpty ();
int GetLength ();
bool GetNode(int position, LNode** node);
int LocateElem(int elem);
bool SetNodeData(int position, int newData);
bool GetNodeData(int position, int &data);
bool InsertNode(int beforeWhich, int data);
bool DeleteNode(int position);
};
//类的实现
Stack::Stack():top(NULL)
{
//
}
Stack::Stack(const Stack& a_stack)
{
if (a_stack.top == NULL)
{
top =NULL;
}
else
{
StackNodePtr temp = a_stack.top;
StackNodePtr end;
end= new StackNode;
end->data = temp->data;
top =end;
//第一各节点已经创建,而且填充了数据
//现在,新的节点要在这个节点之后添加
temp=temp->link;
while(temp!=NULL)
{
end->link = new StackNode;
end=end->link;
end->data =temp->data;
temp =temp->link;
}
end->link =NULL;
}
}
Stack::~Stack()
{
char next;
while (top!=NULL)
next =pop();
}
BOOL Stack::isempty() const
{
return (top==NULL);
}
void Stack::push(char the_symbol)
{
StackNodePtr temNode = new StackNode;
temNode->data = the_symbol;
temNode->link = top;
top= temNode;
}
char Stack::pop()
{
if (top==NULL)
return 0;
char pResult = top->data;
StackNodePtr temNodePtr = top;
top=top->link;//top指针向下移动一位
delete temNodePtr; //释放那个节点的空间
}
相关文章推荐
- 一个栈类的实现(链栈)
- 用python实现一个栈类
- 从零开始学C++之数据封装与抽象:分别用C和C++来实现一个链栈
- 从零开始学C++之数据封装与抽象:分别用C和C++来实现一个链栈
- 分别用C和C++来实现一个链栈
- C实现一个简单链栈
- 从零开始学C++之数据封装与抽象:分别用C和C++来实现一个链栈
- 用C++实现的一个链栈
- 实现一个栈类,类似STL中的栈
- 编写一个程序,实现链栈的各种基本运算
- 二 Java利用等待/通知机制实现一个线程池
- Workflow:实现一个简单的审批流程
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- IText实现多个pdf转成一个pdf
- java实现一个小数字游戏
- 自己实现的一个字符串分割截取函数,以及查找指定字符
- 一个软件实现的Linux看门狗—soft_wdt
- ajax 实现一个网页版山寨QQ .
- OkHttp 3.7源码分析(二)——拦截器&一个实际网络请求的实现
- thrift实现一个C++实例遇到的问题