
栈和队列都属于一位链表,栈是后进先出,进和出都是在同一端进行,就好像一筒羽毛球,只有把上面拿出来,下面的才能拿出来;队列是先进先出的,进和出分别在不同的端进行,比如排队的人,排在前面的人先到柜台办理业务,后面来的人后得到服务。
栈作为一种数据结构,是一种只能在一端进行插入和删除 *** 作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底。
最后的数据在栈顶,需要读数据的时候从栈顶开始d出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除 *** 作中,不需要改变栈底指针。
扩展资料:
在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶d出。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的 *** 作使得栈顶的地址减小,d出的 *** 作使得栈顶的地址增大。
栈在程序的运行中有着举足轻重的作用。最重要的是栈保存了一个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。
#include "stdio.h"#include <iostream>
#include "stdlib.h"
using namespace std
typedef struct node{
int data
struct node *next
}SNode
SNode *InitStack( )
{ SNode *top
top = NULL
return top
}
int StackEmpty(SNode *t)
{
return t==NULL
}
void Push ( SNode *&top , int x )
{
SNode *p
p = (SNode*)malloc(sizeof(SNode))
p->data = x
p->next = top
top = p
}
int Pop( SNode *&top )
{
SNode *p
int t
p=top
top = top->next
t= p->data
free(p)
return t
}
int main()
{
SNode *head
int N
head=InitStack()
cout<<"Please input the number (10) :\n"
cin>>N
while (N) {
Push(head, N % 8)
N = N/8
}
cout<<"-------------------\n"
cout<<"The result number(8) is : "
while (!StackEmpty(head))
cout<<Pop(head)
return 0
}
给你改了下部分函数的参数和返回值!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)