栈与队列


栈的定义
栈是限制仅在表的一端进行插入和删除运算的线性表。
top:插入、删除的这一端。
bottom:另一端
top=0表示栈空,top=m表示栈满。
顺序栈的基本运算
置栈空
void InitStack()
{
node *s;
        s->top=-1;
}
判栈空
int StackEmpty()
{    
node*s;
return s->top==-1;
}
判栈满
int StackFull()
{
node*s;
return s->top==StackSize-1;
}
进栈
void Push()
{
node*s;
s->data[++s->top]=x;
}
退栈
char Pop()
{
node*s;
if(StackEmpty(s)) Error("Stack underflow");
return s->data[--s->top];
}
取栈顶元素
char StackTop()
{
node*s;
if(StackEmpty(s)) Error("Stack is empty");
 return s->data[s->top];
}
栈的链式存储
struct Node{
char data;
struct *StackNode next;
};
struct LinkStack

StackNode *top;
}
入栈
{
    node *s;
    s->top++;  
    s->data[s->top] = a[]; 
}
出栈操作
{
    if (S->top == -1)
    {
    return ERROR;
    }
    S->top--;    
}
两栈共享空间
两个相同类型的栈,分别把数组的两端作为栈底,从两端向中间延伸。定义两者的栈顶分别为top1,top2,当top1+1 = top2时栈满。


队列
队列是只允许在一端进行插入操作,另一端进行删除操作的线性表。
先进先出,允许插入的一端为队尾,允许删除的一端为队头

队列的链式存储结构
就是线性表的单链表,只能尾进头出,队头指针指向链表队列的头结点,队尾指针指向终端结点,空队列时,队头指针和队尾指针都指向头结点。
链队列的入队操作就是在链表尾部插入结点,出队操作就是将头结点的后继结点出队,将头结点的后继改为原后继的后继,若链表除头结点外只有一个元素时,需要将w指向头结点。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值