ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

N-49. 栈的模拟

2022-05-18 16:33:50  阅读:113  来源: 互联网

标签:include 49 int max 元素 数组 数据结构 模拟


Description

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
   栈是一个非常经典的数据结构。我们可以形象地想象一只桶,这只桶里面的元素是从下至上依次排列的,不存在两个元素在桶里的同一个高度。我们可以从桶的顶部往里面放入一个元素,这个操作称为入栈(push);也可以将其最上面的一个元素拿掉,这个操作称为出栈(pop)。显然,由于最顶上的元素“压着”其他元素,我们不能从栈的其他地方放入或者拿掉一个元素。

   现在,为了更好地理解栈,请你编写一个程序来实现栈的各项操作。

   Tips: 我们可以用数组来模拟栈的实现。声明一个数组stack来存储栈内元素,一个整型变量top来表示栈顶在数组中的位置。

——————————————————————————
学了c++以后就不想做各种模拟数据结构的题,又快不过STL,何必呢?
用数组模拟,pop就把数组长度减一,push就把数组长度加一并读入。

#include <stdio.h>  
#include <string.h>  
#include <math.h>  
int a[3010] = {0}, b[3010] = {0};  
char s[110];  
int main () {  
    int max = -1, cnt = 0;  
    while (scanf("%s", s) != EOF) {  
        if (s[1] == 'o') {  
            if (max >= 0) b[cnt++] = a[max], max --;  
        }  
        else if (s[0] == 's' ) {  
            for (int i = 0; i <= max; i++) {  
            if (i != max) printf("%d ", a[i]);  
            else printf("%d", a[i]);}  
            printf("\n");  
        }  
        else {  
            int ans = 0, k = 0;  
            for (int i = strlen(s); i >= 0; i--) {  
                if (s[i] >= '0' && s[i] <= '9') ans += pow(10, k++) * (s[i] - '0');  
                if (s[i] == '-') ans = -ans;  
            }  
            a[++max] = ans;   
        }  
    }  
    if (max != -1) {  
    for (int i = 0; i < cnt; i++) printf("%d ", b[i]);  
    for (int i = max; i >= 0; i--) {  
        if (i != 0) printf("%d ", a[i]);  
        else printf("%d", a[i]);  
    }  
    printf("\n");}  
    return 0;  
}  

标签:include,49,int,max,元素,数组,数据结构,模拟
来源: https://www.cnblogs.com/misasteria/p/16285148.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有