栈的实际应用-后缀表达式与顺序表思考题

简介: 栈的实际应用-后缀表达式与顺序表思考题

 image.gif编辑

作者简介:大家好我是小唐同学(๑>؂<๑),为梦想而奋斗的小唐,让我们一起加油!!!

image.gif 编辑

个人主页:小唐同学(๑>؂<๑)的博客主页

系列专栏:数据结构

博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里

牛客网支持ACM模式哦,刷算法题也很推荐哦!!!

下面上文章------》

目录

 

刷题网站图示:

栈的实际应用-后缀表达式:

用栈来计算后缀表达式思想:

用栈来计算后缀表达式代码:

顺序表思考题:

划重点:

顺序表思考题代码:


刷题网站图示:

image.gif编辑

栈的实际应用-后缀表达式:

我们平常习惯所用为中缀表达式,举个例子:

中缀表达式:(a+b+c*d)/e

后缀表达式:abcd*++e/

用栈来计算后缀表达式思想:

遇到数值 直接入栈,遇到符号则出栈两个元素  扫描到'\0'结束(或者算出字符数组的长度限制循环)  最后返回栈低元素便是表达式的结果。

用栈来计算后缀表达式代码:

# include <stdio.h>
# include <string.h>
# define maxsize 100
int caozuo(int a,char op,int b)
{
  if(op=='*')
  return a*b;
  if(op=='+')
  return a+b;
  if(op=='-')
  return a-b;
  if(op=='/')
  {
    if(b==0)
    {
      printf("异常"); 
      return 0;//异常 
    }
    else
    return a/b; 
  }
}
int houzhui(char a[])
{
int st[maxsize];
int k,b,c,i;
char q;
int tope=-1;
int n=strlen(a);  
for(i=0;a[i]!='\0';i++)
{ 
if(a[i]>='0'&&a[i]<='9')
{ 
//  tope;
  st[++tope]=a[i]-'0';
}
else
{ 
   k=st[tope--];
   b=st[tope--];
  //出栈两个   
   q=a[i];
   c=caozuo(b,q,k);
++tope;
  st[tope]=c;
//printf("%d",);
}
}
return c; 
}
int main()
{
  char a[]="1221/++2/";
  int p=houzhui(a);
  printf("%d",p);
   return 0;
}

image.gif

顺序表思考题:

有N个个位正整数存放在int型数组A[0,…,N-1]中,N为已定义的常量且N≤9,数组A[]的长度为N,另给一个int型变量i,要求只用上述变量(A[0]~A[N-1]与i,这N+1个整型变量)写一个算法,找出这N个整数中的最小者,并且要求不能破坏数组A[]中的数据。

这道题之所以写出来是因为我觉得这道题特别有意思。

划重点:

个位正整数      (说明十位是空额,我们可以利用数十位来限制循环)

只用上述变量(A[0]~A[N-1]与i,这N+1个整型变量

顺序表思考题代码:

# include <stdio.h>
int main()
{
  int a[5];
  for(int i=0;i<5;i++)
  {
    scanf("%d",&a[i]);
  }
  int i=a[0];
  while(i/10<5)
  {
    if(i%10>a[i/10])
      {
        i=i-i%10;
        i=i+a[i/10];
      }
      i=i+10;
   } 
   i=i%10;
   printf("%d",i);
   return 0;
}

image.gif

今天一下午效率滴没有  只有这浅浅的菜菜的两道题。

相关文章
|
11天前
|
消息中间件 存储 搜索推荐
深入理解栈和队列(二):队列
深入理解栈和队列(二):队列
29 0
|
16天前
|
存储 消息中间件 NoSQL
Redis数据类型详解:选择合适的数据结构优化你的应用
Redis数据类型详解:选择合适的数据结构优化你的应用
|
1月前
【栈】数据结构栈的实现
【栈】数据结构栈的实现
|
1月前
|
存储
数据结构--栈和队列
数据结构--栈和队列
|
29天前
|
存储 缓存 并行计算
C/C++ 数据结构设计与应用(二):自定义数据结构的设计 (Design of Custom Data Structures)
C/C++ 数据结构设计与应用(二):自定义数据结构的设计 (Design of Custom Data Structures)
51 0
|
16天前
|
存储 算法 编译器
【数据结构】栈算法(算法原理+源码)
【数据结构】栈算法(算法原理+源码)
【数据结构】栈算法(算法原理+源码)
|
20天前
|
存储
【数据结构】什么是栈?
【数据结构】什么是栈?
24 0
【数据结构】什么是栈?
|
20天前
|
存储 编译器 C语言
【数据结构】深入浅出理解链表中二级指针的应用
【数据结构】深入浅出理解链表中二级指针的应用
27 0
|
24天前
|
存储 设计模式 算法
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
52 0
|
24天前
|
算法 搜索推荐
数据结构第十二弹---堆的应用
数据结构第十二弹---堆的应用

热门文章

最新文章