C/C++ 数据结构 - 栈

1.栈 

https://blog.csdn.net/CSDN___CSDN/article/details/82918436

1 #include <stdio.h>2 #include <stdlib.h>3 4 typedef struct link_node5 {6     int info;7     struct link_node *next;8 }N;9  10 /*创建一个空的链式栈*/11 N *init()12 {13     return NULL;14 }15  16 /*对链式栈进行初始化*/17 N *creat(N *top)18 {19     int x;20     N *p;21     printf("以输入-1为结束\n");22     scanf("%d",&x);23     while(x!=-1)24     {25         p=(N*)malloc(sizeof(N));26         p->info=x;27         p->next=top;28         top=p;29         scanf("%d",&x);30     }31     return top;32 }33  34 /*取得链式栈的栈顶结点值*/35 int read(N *top)36 {37     if(!top)38     {39         printf("\n该链式栈是空的\n");40     }41     return top->info;42 } 43  44 /*输出链式栈中各结点的值*/45 void display(N *top)46 {47     N *p=top;48     if(!top)49     {50         printf("该链式栈是空的\n");51     }52     else53     {54         while(p)55         {56             printf("%d  ",p->info);57             p=p->next;58         }59         printf("\n");60     }61 }62  63 /*链式栈的插入操作*/64 N *insert(N *top,int x)65 {66     N *q=top,*p;67     p=(N*)malloc(sizeof(N));68     p->info=x;69     p->next=top;70     top=p;71     return top;72 }73  74 /*链式栈的删除操作*/75 N *dele(N *top)76 {77     N *p=top;78     if(!top)79     {80         printf("\n该链式栈是空的,无法进行删除\n");return NULL; 81     }82     top=top->next;83     free(p);84     return top; 85 } 86 87 int main()88 {89     N* top = init();90     top = creat(top);91     display(top);92     int i = read(top);93     printf("%d\n",i);94     top = insert(top,5);95     display(top);96     top = dele(top);97     display(top);98     99     return 0;
100 }

2.栈c++实现

https://blog.csdn.net/zichen_ziqi/article/details/80807989

1 #include <iostream>2 using namespace std;3 4 template <class T>5 class stack{6 private:7     struct Node{8         T data;9         struct Node *next;
10     };
11     Node *head;
12     int len;
13 public:
14     stack()
15     {
16         head = NULL;
17         len = 0;
18     }
19     //创建一个栈
20     void create()
21     {
22         int x;
23         Node *p;
24         cout << "以输入-1为结束" << endl;
25         cin >> x ;
26         while(x!=-1)
27         {
28            p=new Node;
29            p->data=x;
30            p->next=head;
31            head=p;
32            cin >> x ;
33            len++;
34         }
35     }
36     //入栈
37     void push(T x)
38     {
39         Node *q = new Node;
40         q->data = x;
41         q->next = head;
42         len++;
43     }
44     //出栈
45     T top()
46     {
47         Node *p;
48         T data;
49         data = head->data;
50         p = head;
51         head = head->next;
52         delete(p);
53         len--;
54         return data;
55     }
56     //返回栈内元素的个数
57     int size()
58     {
59         return len;
60     }
61 };
62 
63 int main() 
64 {
65     stack<int> s;
66     s.create();
67     s.push(7);
68     cout << s.size() << endl;
69     cout << s.top() << endl;
70     cout << s.size() << endl;
71     
72     return 0;
73 }

3.用两个栈实现队列的功能

https://blog.csdn.net/weixin_40671425/article/details/83006485

1 #include<stdio.h>2 #include<stdlib.h>3 4 #define STACK_INIT_SIZE 105  6 typedef struct stack{7     int *base;8     int *top;9     int stacksize;
10 }stack;
11  
12 int initStack(stack *s)//构造一个空栈
13 {
14     s->base = (int *)malloc(sizeof(stack)*STACK_INIT_SIZE);
15     if(s->base == NULL)
16         exit(-1);
17     s->top = s->base;
18     s->stacksize = STACK_INIT_SIZE;
19     return 1;
20 }
21  
22 void push(stack *s,int num)//压栈
23 {
24     *s->top++ = num;//注意 优先级
25 }
26  
27 int pop(stack *s)//弹栈
28 {
29     if(s->base == s->top)//空栈,无栈可弹
30         return -1;
31     return *(--s->top);
32 }
33 
34 int main()
35 {
36     stack s1,s2;
37     initStack(&s1);
38     initStack(&s2);
39     int nums[] = {1,2,3,4,5,6};
40     printf("压入栈 1\n");
41     for(int i=0;i<6;i++)
42     {
43         push(&s1,*(nums + i));
44     }
45     printf("出队的顺序为:\n");
46     for(int i=0;i<6;i++)
47     {
48         push(&s2,pop(&s1));
49     }
50     for(int i=0;i<6;i++)
51     {
52         printf("%d \t",pop(&s2));
53     }
54     return 0;
55 }

4.栈的最小的值

https://blog.csdn.net/ltc0106/article/details/105779396

 1 #include <stdio.h>2 #include <stdlib.h>3 4 #define STACK_TYPE int5  6 typedef struct STACK_NODE7 {8     STACK_TYPE value;9     struct STACK_NODE *next;10     struct STACK_NODE *next_min;11 }Stack_Node;12  13 //data栈14 static Stack_Node *stack;15 //只指向最小数的栈16 static Stack_Node *stack_min;17 18 void create_stack()19 {20     stack = NULL;21     stack_min = NULL;22 }23 24 void push(int value)25 {26     Stack_Node *new_node;27     new_node = (Stack_Node *)malloc(sizeof(Stack_Node));28     //更新data栈29     new_node->value = value;30     new_node->next = stack; //单向循环链表31     stack = new_node;32     //更新min栈33     if(stack_min == NULL ||value < stack_min->value )34     {35         new_node->next_min = stack_min;36         stack_min = new_node;37     }38     else39     {40         new_node->next_min = NULL;41     }42 }43 44 int pop()45 {46     STACK_TYPE value;47     Stack_Node *first_node;48  49     if(stack_min == stack)50         stack_min = stack->next_min;51         52     first_node = stack;53     stack = first_node->next;54     value = first_node->value;55  56     free(first_node);57     return value;58 }59 60 int top()61 {62     return stack->value;63 }64  65  66 int min()67 {68     return stack_min->value;69 }70 71 int main()72 {73     create_stack();74     push(5);75     printf("min:%d\n",min());76     push(4);77     printf("min:%d\n",min());78     push(3);79     printf("min:%d\n",min());80     push(5);81     printf("min:%d\n",min());82     push(1);83     printf("min:%d\n",min());84     push(90);85  86     printf("min:%d\n",min());87     printf("pop:%d\n",pop());88     printf("min:%d\n",min());89     printf("pop:%d\n",pop());90     printf("min:%d\n",min());91     printf("pop:%d\n",pop());92     printf("min:%d\n",min());93     printf("pop:%d\n",pop());94     printf("min:%d\n",min());95     printf("pop:%d\n",pop());96     printf("min:%d\n",min());97     printf("pop:%d\n",pop());98  99     return 0;
100 }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148224.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第五十六天 | 动态规划 part 14 | 1143.最长公共子序列、1035.不相交的线、53. 最大子序和(dp)

目录 1143.最长公共子序列思路代码 1035.不相交的线思路代码 53. 最大子序和&#xff08;dp&#xff09;思路代码 1143.最长公共子序列 Leetcode 思路 本题和718. 最长重复子数组 区别在于这里不要求是连续的了&#xff0c;但要有相对顺序&#xff0c;即&#xff1a;“ace” …

Moonbeam Ignite强势回归

参与Moonbeam上最新的流动性计划 还记得新一轮的流动性激励计划吗&#xff1f;Moonbeam Ignite社区活动带着超过300万枚GLMR奖励来啦&#xff01;体验新项目&#xff0c;顺便薅一把GLMR羊毛。 本次Moonbeam Ignite活动的参与项目均为第二批Moonbeam生态系统Grant资助提案中获…

语义分割 Semantic Segmentation

之前了解过语义分割的内容&#xff0c;感觉可以做好多东西&#xff0c;然后就抽空学习了一下&#xff0c;这里记录一下方便以后查阅&#xff0c;这篇文章可能也会随着学习的深入不断更新。 语义分割 Semantic Segmentation 一些基本概念几种语义分割算法Fully Convolutional Ne…

【单片机】16-LCD1602和12864显示器

1.LCD显示器相关背景 1.LCD简介 &#xff08;1&#xff09;显示器&#xff0c;常见显示器&#xff1a;电视&#xff0c;电脑 &#xff08;2&#xff09;LCD&#xff08;Liquid Crystal Display&#xff09;&#xff0c;液晶显示器&#xff0c;原理介绍 &#xff08;3&#xff…

【分布式计算】二、架构 Architectures

1.中心化架构&#xff08;Centralized Architectures&#xff09; 1.1.经典C/S模型 服务器&#xff1a;一个或多个进程提供服务 客户端&#xff1a;一个或多个进程使用服务 客户端和服务器可以在不同的机器上 客户端遵循请求/回复模型 1.2.传统三层视图 用户界面层&#x…

JUC中的设计模式

文章目录 1. 终止模式之两阶段终止模式 1. 终止模式之两阶段终止模式 需求&#xff1a;用一个线程每两秒检测***状态&#xff0c;当不想检测时&#xff0c;用另一个线程将其停止 在一个线程 T1 中如何“优雅”终止线程 T2&#xff1f;这里的【优雅】指的是给 T2 一个料理后事…

910数据结构(2019年真题)

算法设计题 问题1 有一种排序算法叫做计数排序。这种排序算法对一个待排序的表&#xff08;采用顺序存储&#xff09;进行排序&#xff0c;并将排序结果存放到另一个新的表中。必须注意的是&#xff0c;表中所有待排序的关键字互不相同&#xff0c;计数排序算法针对表中的每个…

【AI处理器组合】python实现-附ChatGPT解析

1.题目 AI处理器组合 知识点数组 时间限制:1s 空间限制: 256MB 限定语言:不限 题目描述: 某公司研发了一款高性能AI处理器。每台物理设备具备8颗AI处理器,编号分别为0、1、2、3、4、5、6、7。编号0-3的处理器处于同一个链路中,编号4-7的处理器处于另外一个链路中,不通链路中…

10.03

代码 #include <iostream>using namespace std; class cz { private:int num1; //实部int num2; //虚部 public:cz(){}cz(int a,int b):num1(a),num2(b){}cz(const cz &other):num1(other.num1),num2(other.num2){}~cz(){}const cz operator(const cz &othe…

HTML5 跨屏前端框架 Amaze UI

Amaze UI采用国际最前沿的“组件式开发”以及“移动优先”的设计理念&#xff0c;基于其丰富的组件&#xff0c;开发者可通过简单拼装即可快速构建出HTML5网页应用&#xff0c;上线仅半年&#xff0c;Amaze UI就成为了国内最流行的前端框架&#xff0c;目前在Github上收获Star数…

Java开源工具库使用之Lombok

文章目录 前言一、常用注解1.1 AllArgsConstructor/NoArgsConstructor/RequiredArgsConstructor1.2 Builder1.3 Data1.4 EqualsAndHashCode1.5 Getter/Setter1.6 Slf4j/Log4j/Log4j2/Log1.7 ToString 二、踩坑2.1 Getter/Setter 方法名不一样2.2 Builder 不会生成无参构造方法2…

互联网Java工程师面试题·ZooKeeper 篇·第一弹

目录 1. ZooKeeper 面试题&#xff1f; 2. ZooKeeper 提供了什么&#xff1f; 3. Zookeeper 文件系统 4. ZAB 协议&#xff1f; 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册 Watcher 实现 8. 服务端处理 Watcher 实现 9. 客…

第10章 MySQL(一)

10.1 谈谈MySQL的架构 难度:★★ 重点:★ 白话解析 要想彻底的理解MySQL,它的架构一定要先弄清楚,当Java程序员通过JDBC或者Mybatis去执行一条SQL的时候,到底经历了什么。下边先看一幅图: 户端:Java程序员通过JDBC或者Mybatis去拿MySQL的驱动程序,实际上就是拿客户端。…

oracle分组合并数值带顺序

比如&#xff1a;有如下一张设备电子围栏位置坐标的表&#xff08;tb_equ_point&#xff09;。 equ_name:设备电子围栏名称 point_id:点位坐标id point_x:点位x坐标 point_y:点位y坐标。 附数据&#xff1a; INSERT INTO "tb_equ_point" ("EQU_NAME",…

Linux系统编程基础:进程控制

文章目录 一.子进程的创建操作系统内核视角下的父子进程存在形式验证子进程对父进程数据的写时拷贝 二.进程等待进程非阻塞等待示例: 三.进程替换内核视角下的进程替换过程:综合利用进程控制系统接口实现简单的shell进程 进程控制主要分为三个方面,分别是:子进程的创建,进程等待…

html 边缘融合加载

html 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>边缘融合加载</title><style>* {margin: 0;padding: 0;box-sizing: border-box;}body {height: 100vh;padding-bottom: 80px;b…

【Java每日一题】— —第二十题:杨辉三角(直角三角形)。(2023.10.04)

&#x1f578;️Hollow&#xff0c;各位小伙伴&#xff0c;今天我们要做的是第二十题。 &#x1f3af;问题&#xff1a; 杨辉三角&#xff08;直角三角形&#xff09;。 解法1 第一步:动态初始化 第二步:为主对角线及第一列的元素赋值1 第三…

用于工业物联网和自动化的 Apache Kafka、KSQL 和 Apache PLC4

由于单一系统和专有协议&#xff0c;数据集成和处理是工业物联网&#xff08;IIoT&#xff0c;又名工业 4.0 或自动化工业&#xff09;中的巨大挑战。Apache Kafka、其生态系统&#xff08;Kafka Connect、KSQL&#xff09;和 Apache PLC4X 是以可扩展、可靠和灵活的方式实现端…

【数据科学】Scikit-learn[Scikit-learn、加载数据、训练集与测试集数据、创建模型、模型拟合、拟合数据与模型、评估模型性能、模型调整]

这里写目录标题 一、Scikit-learn二、加载数据三、训练集与测试集数据四、创建模型4.1 有监督学习评估器4.1.1 线性回归4.1.2 支持向量机(SVM)4.1.3 朴素贝叶斯4.1.4 KNN 4.2 无监督学习评估器4.2.1 主成分分析(PCA)4.2.2 K Means 五、模型拟合5.1 有监督学习5.2 无监督学习 六…

行高的继承和消除内外边距

行高的继承性 <style>div {font: 12px/1.5 Microsoft yahei;} ​p {font-size: 14px;}</style> <body><div><p>苏丹红事件</p></div> <body> 12px这里没有行高没有写单位&#xff0c;子类继承父类的1.5倍&#xff0c;就是14*…