队列和栈的c语言实现(数据结构栈和队列c语言)

针对队列和栈的c语言实现(数据结构栈和队列c语言)的内容, 嗨壳技术分享网今天给大家作出详细的解答吧!

  本篇文章给大家谈谈队列和栈的c语言实现,以及数据结构栈和队列c语言对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

  本文目录一览:

  1、C语言栈与队列

2、栈与队列的应用(C语言)求解

3、c语言实现队列和栈的方法

  C语言栈与队列

  类似尾查法,将指针s赋给top,那么栈顶指针所指向的值就是你新插进去的那个值,符合栈的先进后出

  栈与队列的应用(C语言)求解

  #include “stdio.h”

  #include “malloc.h”

  typedef struct node1{

  int *data;

  int top;

  void init(void);

  void del(void);

  int pop(int);

  void push(int);

  }s;

  void node1::init(){

  data=(int*)malloc(sizeof(int)*100);

  top=0;

  }

  void node1::del(){

  free(data);

  top=0;

  }

  int node1::pop(int e){

  if(top==0)return 0;

  e=data[–top];

  return 1;

  }

  void node1::push(int e){

  if(top==100)return;

  data[top++]=e;

  }

  typedef struct node2{

  int *data;

  int top;

  int bottom;

  void init(void);

  void del(void);

  int pop(int);

  void push(int);

  void format(s);

  }q;

  void node2::init(){

  data=(int*)malloc(sizeof(int)*100);

  top=bottom=0;

  }

  void node2::del(){

  free(data);

  top=bottom=0;

  }

  int node2::pop(int e){

  if(top==bottom)return 0;

  e=data[top++];

  return 1;

  }

  void node2::push(int e){

  if(bottom==100)return;

  data[bottom++]=e;

  }

  void node2::format(s e){

  int a;

  while(e.pop(a)){

  push(a);

  }

  }

  int main(){

  s b;q c;

  int a;

  b.init();c.init();

  printf(“输入栈中的数,以0结尾

  ”);

  while(1){

  scanf(“%d”,a);

  if(a==0)break;

  b.push(a);

  }

  c.format(b);

  while(c.pop(a)){

  printf(“%d

  ”,a);

  }

  b.del();

  c.del();

  return 0;

  }//b为栈,c为队列,c.format(b)为转换函数

  c语言实现队列和栈的方法

  #define OVERFLOW -1

  #define OK 1

  #define ERROR 0

  #define STACK_INIT_SIZE 100

  #define STACKINCREMENT 10

  #define N 20

  typedef char SElemType;

  typedef int Status;typedef struct {

  SElemType *base;

  SElemType *top;

  int stacksize;

  }SqStack;#includestdio.h

  #includestdlib.hStatus CreatStack(SqStack S){

  //创建栈

  S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));

  if(!S.base)exit(OVERFLOW);

  S.top=S.base;

  S.stacksize=STACK_INIT_SIZE;

  return OK;

  }//CreatStackStatus Push(SqStack S,SElemType e){

  //插入e为新的栈顶元素

  if(S.top-S.base=S.stacksize){//栈满,追加存储空间

  S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

  if(!S.base)exit (OVERFLOW);//存储空间分配失败

  S.top=S.base+S.stacksize;

  S.stacksize+=STACKINCREMENT;

队列和栈的c语言实现(数据结构栈和队列c语言)

  }

  *S.top++=e;

  return OK;

  }//PushStatus Pop(SqStack S ,SElemType e){

  //若栈不空,删除栈顶元素,并用e返回其值

  if(S.top==S.base) return ERROR;

  e=*–S.top;

  return OK;

  }//Pop typedef char QElemType;

  typedef struct QNode{

  QElemType data;

  struct QNode *next;

  }QNode,*QNodePtr;typedef struct{

  QNodePtr front;

  QNodePtr rear;

  }LinkQueue;Status CreatQueue(LinkQueue Q){

  //建立一个空的链式栈

  Q.front=Q.rear=(QNodePtr)malloc(sizeof(QNode));

  if(!Q.front)exit(OVERFLOW);

  Q.front-next=NULL;

  return OK;

  }Status EnQueue(LinkQueue Q,QElemType e){ QNodePtr p;

  p=(QNodePtr)malloc(sizeof(QNode));

  if(!p)exit(OVERFLOW);

  p-data=e;p-next=NULL;

  Q.rear-next=p;

  Q.rear=p;

  return OK;

  }Status DeQueue(LinkQueue Q,QElemType e){QNodePtr p;brif(Q.front==Q.rear) return ERROR;brp=Q.front-next; e=p-data;brQ.front-next=p-next;brif(Q.rear==p) Q.rear=Q.front;brfree(p);brreturn OK;br}int stackPalindrom_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0

  {

  printf(“栈练习,请输入要判断的字符串以#作为结束符,不要超过二十个字符

  ”);

  SqStack S;

  CreatStack(S);

  char c;

  SElemType a;

  SElemType b[N];

  int count = 0;

  fgets( b, N, stdin );

  while((b[count])!=’#’)

  {

  Push(S,b[count]); //进栈

  count++;

  }

  int i = 0;

  while(i count)

  {

  Pop(S,a);

  if(a!=b[i])

  return ERROR;

  i++;

  }

  return OK;}//stackPalindrom_Test int queuePalindrom_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0

  {

  printf(“队列练习,请输入要判断的字符串以#作为结束符,不要超过二十个字符

  ”);

  LinkQueue Q;

  CreatQueue(Q); char c;

  SElemType a;

  SElemType b[N];

  int count = 0;

  fgets( b, N, stdin );

  while((b[count])!=’#’)

  {

  EnQueue(Q,b[count]);; //入列

  count++;

  } while(count– 0)

  {

  DeQueue(Q,a);

  if(a!=b[count])

  return ERROR;

  }

  return OK;

  }//queuePalindrom_Test Status main(){ if(stackPalindrom_Test()==1)

  printf(“是回文

  ”);

  else printf(“不是回文

  ”); if(queuePalindrom_Test()==1)

  printf(“是回文

  ”);

  else printf(“不是回文

  ”);

  return OK;

  }

  关于队列和栈的c语言实现和数据结构栈和队列c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

关于 队列和栈的c语言实现(数据结构栈和队列c语言) 的问题,嗨壳技术分享网(www.heikehao.com)小编就分享到这里吧!如果大家有疑问欢迎留言询问。

原创文章,作者:语言我知,如若转载,请注明出处:https://www.heikehao.com/779.html

(0)
语言我知语言我知
上一篇 2020年1月4日
下一篇 2020年1月4日

相关推荐

  • 梯形图转c语言视频

    梯形图转c语言视频 大家并不陌生,借来给大家详细说说吧!   主控指令梯形图如何转化为栈指令   1、FX15是型号,30是输入输出总点数,M是基本单元,R是继电器输出。嵌套是上层…

    2020年3月21日
  • c语言编程语言软件下载,c语言是编程语言吗

    今日,嗨壳技术分享网小编分享c语言编程语言软件下载,c语言是编程语言吗 相关内容,内容如下。   如何下载C语言编程软件?   1、一句话,就装在根目录下的x(AB,C,D):Co…

    2020年3月30日
  • 有向图十字链表c语言(有向图的十字链表怎么画)

    针对有向图十字链表c语言(有向图的十字链表怎么画)的内容, 嗨壳技术分享网今天给大家作出详细的解答吧!   今天给各位分享有向图十字链表c语言的知识,其中也会对有向图的十字链表怎么…

    2020年4月17日
  • 奇偶数字判断c语言-奇偶数怎么判断c语言

    关于奇偶数字判断c语言-奇偶数怎么判断c语言话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些奇偶数字判断c语言-奇偶数怎么判断c语言内容,让我们一起了解一些技术吧!   判断…

    2020年9月3日
  • 如何用c语言绘制椭圆

    今日,嗨壳技术分享网小编分享如何用c语言绘制椭圆 相关内容,内容如下。   怎么用C语言画椭圆ellipse   调用 graphics.h 函数库实现就行   #include …

    2020年8月25日
  • 关于2015年c语言二级考试真题的信息

    今天,嗨壳技术分享网给大家整理一些关于2015年c语言二级考试真题的信息内容。   今天给各位分享2015年c语言二级考试真题的知识,其中也会对进行解释,如果能碰巧解决你现在面临的…

    2020年6月27日
  • c语言连用(c语言连用两个for)

    c语言连用(c语言连用两个for)   今天给各位分享c语言连用的知识,其中也会对c语言连用两个for进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!   本…

    2020年3月16日
  • c语言中if中break

    关于c语言中if中break话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些c语言中if中break内容,让我们一起了解一些技术吧!   C语言里面if()break怎么用 …

    2021年9月1日
  • 怎么用c语言看大小端

    怎么用c语言看大小端 大家并不陌生,借来给大家详细说说吧!   C语言中使用union是怎么判断处理器大小端的   union Charge   {   char arr[2]; …

    2020年6月5日
  • 建立二叉树c语言,二叉树的建立与遍历c语言实现

    建立二叉树c语言,二叉树的建立与遍历c语言实现 大家并不陌生,借来给大家详细说说吧!   完整正确的C语言二叉树程序   语句较多,但比较简单,所以不一一介绍了,难理解的i主要编程…

    2022年6月30日

网上怎么找黑客帮忙多少钱

怎么网上找到的黑客?黑客的收费标准是什么呢?找黑客一般费用是多少?


找黑客帮忙一般要多少钱

黑客服务的价格范围很广,主要取决于服务的类型和难度。根据提供的信息如下:


1.攻击服务:


攻击范围:这包括了通过扫描入侵、种植木马等方式对他人计算机实施非法控制,并利用被控制的计算机对网站、App等服务器发起攻击


。1

2.特定账户的售价:


账户信息:如垂钓者、而勒索软件,显示市场对特定黑客工具的需求和价格波动。

3.攻击工具:

“RIG”攻击工具包的租用费用,提供了不同时长的选择。

4.远程访问木马(RAT)的价格:

相比去年有所下降,显示出市场价格的波动。

5.DDOS攻击的报价:

DDOS攻击服务按不同时长定价选择。

黑客服务的价格因服务类型、难度、以及市场需求的不同而有很大的差异。这些价格反映了黑客服务市场的复杂性和多样性,同时也提醒人们网络安全的重要性。