栈的操作:进栈和出栈

 #include "stdafx.h"
#include "stack.h"
#define maxsize 20
typedef int Elemtype; /*顺序存储—数组形式*/
struct stack
{
int data[maxsize];
int top;
}; void init(struct stack *ps)
{
ps->top = -;
} void init2(struct Doublestack * ps)
{
ps->top1 = -;
ps->top2 =maxsize;
} void print(int a[],int len)
{
int i;
// len = sizeof(a) / sizeof(a[0]);这样子你得不到长度的,此时a退化为了指针
for (i = ; i <= len - ; i++)
{
printf("%d\n", a[i]);
}
}
int push(struct stack * s, int e)
{
if (s->top == maxsize - )
return -;
s->data[++s->top] = e;
return ;
} Elemtype pop(struct stack *s)
{
int n;
if (s->top == )
return -;
n = s->data[s->top--]; return n;
} //两栈共享
struct Doublestack
{
int data[maxsize];
int top1;
int top2;
}; int push_two(struct Doublestack *s, int e, int stackflag)
{
if (s->top1 == s->top2 - ) //full stack
return -;
if (stackflag == )
{
s->data[++s->top1] = e;
}
else if (stackflag == )
{
s->data[--s->top2] = e;
}
return ;
}
Elemtype pop_two(struct Doublestack *s, int stackflag)
{
int n;
if (stackflag == )
{
if (s->top1 == -) //s1 empty
return -;
n = s->data[s->top1--];
}
else if (stackflag == )
{
if (s->top2 ==maxsize) //s2 empty
return -;
n = s->data[s->top2++];
}
//printf("%d\n", n);
return n;
}

主函数

 #include "stdafx.h"
#include "link.h"
#include "stack.h" int main()
{ /*stack_test*/
//struct stack s;
//struct stack *ps = &s;
//init(ps); struct Doublestack s;
struct Doublestack * ps = &s;
init2(ps);
int e = ;
int n;
//push( ps, e);
//push(ps, 2);
//print(ps->data,2);
//n = pop(ps);
//printf("%d\n", n); push_two(ps, e,);
push_two(ps, , );
print(ps->data, );
n=pop_two(ps,);
printf("n =%d\n", n); system("pause"); }

C语言—栈的更多相关文章

  1. C语言栈与调用惯例

    C语言栈与调用惯例 1.前言 最近在再看<程序员的自我修养>这本书,对程序的链接.装载与库有了更深入的认识.关于这本书的评价可以去豆瓣看看http://book.douban.com/su ...

  2. C语言栈调用机制初探

    学习linux离不开c语言,也离不开汇编,二者之间的相互调用在源代码中几乎随处可见.所以必须清楚地理解c语言背后的汇编结果才能更好地读懂linux中相关的代码.否则会有很多疑惑,比如在head.s中会 ...

  3. C语言 栈 链式结构 实现

    一个C语言链式结构实现的栈 mStack (GCC编译). /** * @brief C语言实现的链式结构类型的栈 * @author wid * @date 2013-10-30 * * @note ...

  4. C语言 栈 顺序结构 实现

    一个能够自动扩容的顺序结构的栈 ArrStack 实例 (GCC编译). /** * @brief C语言实现的顺序结构类型的栈 * @author wid * @date 2013-10-29 * ...

  5. [数据结构]C语言栈的实现

    有始有终,所以我准备把各种数据结构都讲一次,栈也分顺序存储和链式储存,这里我们选择链式存储来讲,顺序存储没有难度(链式其实也是) 作为数据结构中最简单的栈,这里不会说太多,首先考虑一下下面的model ...

  6. C语言栈的实现

    栈是常用的数据结构之一,下面给出一个链式栈的实现~~头文件Stack.h #ifndef Stack_H #define Stack_H typedef int Item; typedef struc ...

  7. c语言栈的链表实现

    #include <stdio.h> #include <stdlib.h> #include"PublicDS.h" typedef int ElemTy ...

  8. C语言 - 栈和单链表的实现

    单链表:linkList.h linkList.c #ifndef LINKLIST_H_INCLUDE #define LINKLIST_H_INCLUDE #include <Windows ...

  9. Go语言栈定义及相关方法实现

    // stack 栈 package Algorithm import ( "errors" "reflect" ) // 栈定义 type Stack str ...

随机推荐

  1. vue中监听页面滚动和监听某元素滚动

    ①监听页面滚动 在生命周期mounted中进行监听滚动: mounted () { window.addEventListener('scroll', this.scrollToTop) }, 在方法 ...

  2. 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  3. goldengate简单配置

    goldendate配置单项同步 源数据库    extract抽取进程 trail文件 复制进程 目标进程 由于最开始配置goldengate的时候,没有弄清除原理,导致出错了都不知道怎么解决. 最 ...

  4. Navicat 12 连接 Mysql8.0 使用日志

    目前最新的Mysql8.0 + Navicat12,使用中常有一些棘手问题 解决了的都会贴出来,受益于小伙伴们 我们的目标是发现问题,解决问题,欢迎大家贴出自己使用时遇到的问题,集思广益 好了,上干货 ...

  5. php面试题,百度答案

    一公司: 1.@当将其放置在一个PHP表达式之前有什么作用? 2.用foreach把$arr=array(1,2,3,4)每个values值乘2输出: 3.PHP定界符如何使用? 4.说出mysql_ ...

  6. python教程(七)·字典

    本文介绍本系列教程最后一个数据结构--字典 在现实生活中,查英语字典的时候,我们通常根据单词来查找意思.而python中的字典也是类似的,根据特定的 "键"(单词)来查找 &quo ...

  7. docker 容器模式下部署mysql 主从复制

    1.计划用两台host来部署,分别部署一台 mysql,一主一从,2.配置好主从mysql配置文件,更改文件名即可[client]port = 3306socket = /var/run/mysqld ...

  8. go基础语法-变量定义

    1.基础定义 变量类型在变量名后 var a int var s string 2.定义并赋值 var a,b int = 1,2 var s string="abc" 3.类型推 ...

  9. 在Eclipse上编写Go项目

     Note for users in China Note: if you are behind the Great Firewall of China, you are very likely to ...

  10. java虚拟机内存管理

    1. java虚拟机内存如下 2. 运行时数据区 内存图分析: