队列和栈的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语言如何调用cmd

    c语言如何调用cmd   c语言如何运行cmd命令   1、输入可执行程序文件名 后面带上你需要的参数 按Enter键 就可以了。   2、你要写成循环接受命令的样子,你现在写的代…

    2020年1月3日
  • 大学不会c语言

    今日,嗨壳技术分享网小编分享大学不会c语言 相关内容,内容如下。   我大一,刚接触C语言,各种不会,老师也不太称职,希望在这方面有才的人可以帮我一下   这个问题有很多朋友都会遇…

    2020年9月25日
  • 斐波那契数列c语言程序,斐波那契数列c语言程序流程图

    今日,嗨壳技术分享网小编分享斐波那契数列c语言程序,斐波那契数列c语言程序流程图 相关内容,内容如下。   c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,……

    2021年10月21日
  • 菜单c语言,c语言程序菜单

    针对菜单c语言,c语言程序菜单的内容, 嗨壳技术分享网今天给大家作出详细的解答吧!   如何用C语言做一个菜单,里面放程序   给你一个简单的菜单程序吧。其中的子函数,填充成楼主所…

    2020年2月20日
  • 学c语言入门先学什么软件(学c语言入门先学什么软件)

    学c语言入门先学什么软件(学c语言入门先学什么软件)   本篇文章给大家谈谈学c语言入门先学什么软件,以及学c语言入门先学什么软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站…

    2020年7月23日
  • 输出月历的c语言程序,c语言打印某年某月日历

    输出月历的c语言程序,c语言打印某年某月日历 大家并不陌生,借来给大家详细说说吧!   .C语言编程“已知2000年1月1日为星期六,任意输入一年份,打印出其月历…  …

    2020年1月5日
  • 用c语言写界面吗

    关于用c语言写界面吗话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些用c语言写界面吗内容,让我们一起了解一些技术吧!   c语言可以用于制作网页吗?   1、如果你一定要用C…

    2020年2月24日
  • c语言绝对值排序,绝对值排序的c++语言题

    今天,嗨壳技术分享网给大家整理一些c语言绝对值排序,绝对值排序的c++语言题内容。   C语言用绝对值排序   1、C语言中绝对值表示方法如下:工具/材料:联想小新air14电脑,…

    2020年9月5日
  • 正规的黑客网站

    黑客网站是一个神秘而又充满诱惑的地方,它们汇聚了世界各地最顶尖的黑客和安全专家,他们在这里交流技术、分享经验、探讨最新的安全漏洞和攻击技巧。这些网站不仅是黑客们的聚集地,也是安全从业者和普通用户了解网络安全的重要途径。在黑客网站上,你可以看到各种各样的内容,从技术

    2024年3月28日
  • 单片机c语言定时中断程序 – 单片机c语言定时器

    关于单片机c语言定时中断程序 – 单片机c语言定时器话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些单片机c语言定时中断程序 – 单片机c语言定时器内…

    2020年8月26日

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

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


找黑客帮忙一般要多少钱

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


1.攻击服务:


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


。1

2.特定账户的售价:


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

3.攻击工具:

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

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

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

5.DDOS攻击的报价:

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

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