【小白成长撸】--顺序栈(C语言版)

 1 // 顺序栈.cpp : 定义控制台应用程序的入口点。
 2 //
 3
 4 #include "stdafx.h"//test1.0--栈表仅限Int类型
 5 #include <stdio.h>
 6
 7 #define true 1
 8 #define false 0
 9
10 typedef struct stack_type
11 {
12     int stack[100];//最大容纳100个元素
13     int top;
14 }stacktype;
15
16 int pushes(stacktype *s, int x);//压入栈
17 int pops(stacktype *s);//删除栈
18 void initiatest(stacktype *s);//初始化
19
20 int main(void)
21 {
22     stacktype L;
23     stacktype *sta = &L;//失败过,如果没有L这个元素,直接stacktype *sta,编译器会报“未初始化的局部变量“sta””
24     int i, x,m;
25
26     initiatest(sta);
27
28     i = 0;
29
30     for (;;i++)
31     {
32         scanf_s("%d", &x);
33
34         if (x == -2)
35         {
36             break;
37         }
38
39         pushes(sta, x);
40     }
41
42     for (m = 0; m < i; m++)
43     {
44         printf_s("%d   ", sta->stack[m]);
45     }
46
47     return 0;
48 }
49
50 int  pushes(stacktype *s, int x)
51 {
52     if (s->top >= 99)
53     {
54         return (false);
55     }
56     else
57     {
58         s->top++;
59         s->stack[s->top] = x;
60         return(true);
61     }
62 }
63
64 int pops(stacktype *s)
65 {
66     if (s->top < 0)
67     {
68         return (false);
69     }
70     else
71     {
72         s->top--;
73         return (s->stack[s->top + 1]);
74     }
75 }
76
77 void initiatest(stacktype *s)
78 {
79     s->top = -1;
80     return ;
81 }
82
83 //参考:http://www.cnblogs.com/yuxi/archive/2007/02/10/647076.html
84 //和一些书籍,开始我用的双指针,因为我认为修改指针的内容,就应该在子函数中修改指针的指针,也就是指针的地址,但会出现错误。
时间: 2025-01-12 02:33:42

【小白成长撸】--顺序栈(C语言版)的相关文章

【小白成长撸】--链栈(C语言版)

1 // 链栈.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <stdio.h> 6 #include <stdlib.h>//malloc的头文件 7 8 typedef struct line_stack//栈包装 9 { 10 int x; 11 struct line_stack *next; 12 }link; 13 14 void pushes(link **top, int

【小白成长撸】--循环顺序队列

1 // 循环顺序队列.cpp : 定义控制台应用程序的入口点. 2 //适合整数 3 4 #include "stdafx.h" 5 #include<stdio.h> 6 7 #define MAXNUM 100 8 #define true 1 9 #define false 0 10 11 typedef struct queue_type 12 { 13 int queue[MAXNUM];//队列的最大值为100 14 int front;//头指针 15 in

链栈-C语言版

#include<stdio.h> #include<iostream> #include<stdlib.h> using namespace std; typedef struct stacknode                           ///结构节点的定义 { int data; struct stacknode *next; }StackNode,*LinkStack; int StackEmpty(LinkStack top)          

从两端生长的双向栈-C语言版

<pre name="code" class="cpp">[cpp] 简单双端栈的应用 源文件部分: #include <stdio.h> #define MaxStackSize 100 typedef int DataType; int len,x; #include"SeqStack.h" int main() { SeqStack myStack; int i,n,m; StackInitiate(&myS

【C++小白成长撸】--(续)单偶数N阶魔方矩阵

1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生 3 **All rights reserved. 4 **文件名:单偶数N阶魔方矩阵 5 **程序作用:单偶数N阶魔方矩阵 6 **作者:Amoshen 7 **完成日期:2016.11.2 8 **版本号:V1.0 9 */ 10 #include<iostream> 11 12 using namespace std; 13 14 #define MAX_SIZE 100 15 16 int

【C++小白成长撸】--(续)双偶数N阶魔阵

原理: 把双偶数N阶魔阵均分为(N/4)^2个4阶魔阵(4*4) 每个魔阵的对角线都标为"-1",其余位置标为"0" 从第一个位置(a[0][0])从左到右,从上到下(例如:a[0][0],a[0][1]--a[0][3],a[1][0])用自然数(从1开始)依次填充,每次填充数加一,遇到-1,跳过,但自然数继续计数 当第三步全部完成后,从最下面一个位置(a[3][3]),从右到左,从下到上,计数从1开始,每次填充数加一,遇到填充了的位置,跳过,但自然数继续计数.

【C++小白成长撸】--矩阵乘法程序

矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分. 矩阵乘法的原理: 矩阵乘法在代码中实现 得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加上是二维数组,再加一个for循环 以下呈现出代码 1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生二年级学生 3 **All rights reserved. 4 **文件名:矩阵乘法 5 **程序作用:矩阵乘法 6 **作者:Amoshen 7 *

【C++小白成长撸】--N阶幻方(魔阵)矩阵

解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时候,必须把这个矩阵看成是回绕的. 代码中,为了判断,当前位置是否有元素,我引入与魔方矩阵规模相同的另一个矩阵,如果魔方矩阵一个位置不为空,相应另一个矩阵那个位置为1,否则为0. 1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生 3 **All rig

【ACM小白成长撸】--贪婪法解硬币找零问题

question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二大的硬币,依次类推. 1 /*程序的版权和版本声明部分: 2 **从<C++程序设计思想与方法>(作者:翁惠玉)P61转载 3 */ 4 #include <iostream> 5 6 using namespace std; 7 8 #define ONEFEN 1 9 #defin