栈实现
来源:互联网 发布:淘宝虚拟物品拒绝退款 编辑:程序博客网 时间:2024/05/16 15:43
#include<stdio.h>
class node
{
public:
int data;
node *plink;
};
class List
{
public:
node *head;
public:
List()
{
head = NULL;
}
~List()
{
node *temp;
while(head)
{
temp = head->plink;
delete head;
head = temp;
}
}
bool Insert(int k, int e)
{
node *temp;
temp = head;
for(int i=1; (i<k)&&temp; i++)
temp = temp->plink;
node *new_node = new node;
new_node->data = e;
if(k)
{
new_node->plink = temp->plink;
temp->plink = new_node;
}
else
{
new_node->plink = head;
head = new_node;
}
return true;
}
bool Delete(int k)
{
if(k == 1)
{
head = head->plink;
return true;
}
node *temp;
temp = head;
for(int i=1; (i<(k-1))&&temp; i++)
temp = temp->plink;
node *tempDel;
tempDel = temp->plink;
temp->plink = tempDel->plink;
return true;
}
int get(int k)
{
node *temp;
temp = head;
for(int i=1; (i<k)&&temp; i++)
temp = temp->plink;
return temp->data;
}
int Length()
{
int length = 0;
node *temp;
temp = head;
while(temp)
{
length++;
temp = temp->plink;
}
return length;
}
bool IsEmpty()
{
return head==NULL;
}
};
class Stack:public List
{
public:
Stack(){}
~Stack(){}
Push(int e)
{
Insert(Length(), e);
}
Pop()
{
Delete(Length());
}
int GetTop()
{
return get(Length());
}
};
int main()
{
Stack stack;
stack.Push(1);
stack.Push(2);
stack.Push(2);
stack.Push(2);
stack.Push(3);
while(1)
{
printf("%d/n", stack.GetTop());
stack.Pop();
if(stack.IsEmpty())
break;
}
}
- 栈实现
- 栈实现
- 如何实现 :双栈实现队列 双队列实现栈
- Java栈实现:数组实现和链表实现
- 队列实现栈和栈实现队列
- 栈实现队列,链表实现栈
- 栈实现队列&&队列实现栈
- 栈实现队列,队列实现栈
- 队列实现栈,栈实现队列
- 数据结构--队列实现栈&栈实现队列
- 自己实现的栈 用数组实现
- 阶乘的栈实现和递归实现
- 栈数组实现实现文件C语言
- 栈的实现—由数组实现
- 用链表实现栈C++实现源码
- 栈的顺序实现和链接实现
- Java实现栈一:通过LinkedList实现
- 栈的C++实现:数组实现
- WM_EXITSIZEMOVE 保存窗口位置的合适时机
- 爸爸我提这个袋子……
- 链表实现
- 在现有的考勤机系统中增加食堂菜谱管理模块的实施想法
- Apache TOMCAT 区别
- 栈实现
- APC机制
- 队列实现
- 终于csdn了。留个纪念。
- INFORMIX的监控和管理命令
- 重构还是结构,开创还是竞争--面对战略的难题
- (VBA)Word中对选中的行(代码行)自动编号并修改注释的颜色
- vc++菜单操作日记
- js学习笔记3