栈和队列的作用是什么?它们主要可以应用在哪些方面?

栈和队列的作用是什么?它们主要可以应用在哪些方面?,第1张

栈和队列都属于一位链表,栈是后进先出,进和出都是在同一端进行,就好像一筒羽毛球,只有把上面拿出来,下面的才能拿出来;队列是先进先出的,进和出分别在不同的端进行,比如排队的人,排在前面的人先到柜台办理业务,后面来的人后得到服务。

栈作为一种数据结构,是一种只能在一端进行插入和删除 *** 作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底。

最后的数据在栈顶,需要读数据的时候从栈顶开始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

}

给你改了下部分函数的参数和返回值!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7758116.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存