C语言数据结构-栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作
1、数据结构-栈的实现-C语言
#define MAXSIZE 100
//栈的存储结构
typedef struct
{
int* base; //栈底指针
int* top; //栈顶指针
int stacksize; //最大容量
} SqStack;
//栈初始化---1
void InitStack(SqStack* S);
//栈的销毁---2
void DestroyStack(SqStack* S);
//栈的清空---3
void ClearStack(SqStack* S);
//判断栈是否为空---4
void StackEmpty(SqStack S);
//栈的长度---5
int StackLength(SqStack S);
//取栈顶元素---6
void GetTop(SqStack S);
//入栈操作---7
void Push(SqStack* S, int value);
//出栈操作---8
void Pop(SqStack* S,int* value);
//依次访问栈元素---9
void StackTraverse(SqStack S);
void ShowHelp();
//-----------------------------------------------
void ShowHelp()
{
printf("1---初始化栈\n");
printf("2---销毁栈\n");
printf("3---清空栈\n");
printf("4---判断栈是否为空\n");
printf("5---栈的长度\n");
printf("6---取栈顶元素\n");
printf("7---入栈操作\n");
printf("8---出栈操作\n");
printf("9---依次访问栈元素\n");
}
void InitStack(SqStack* S)
{
S->base = (SqStack*) malloc(MAXSIZE*sizeof(SqStack));
if(!S->base)
{
printf("分配失败.\n");
return;
}
S->top = S->base; //初始时候相等
S->stacksize = MAXSIZE; //设置最大容量
}
void DestroyStack(SqStack* S)
{
free(S->base); //释放基地址
S->top = NULL;
S->base = NULL;
}
void ClearStack(SqStack* S)
{
S->top = S->base;
}
void StackEmpty(SqStack S)
{
if(S.top == S.base)
printf("此栈为空栈。\n");
else
printf("此栈不为空栈。\n");
}
int StackLength(SqStack S)
{
return S.top - S.base;
}
void GetTop(SqStack S)
{
if(S.top == S.base)
{
printf("此栈为空。\n");
return;
}
printf("此栈顶元素为%d。\n",*(S.top-1));
}
void Push(SqStack* S, int value)
{
if(S->top-S->base == MAXSIZE)
{
printf("栈中元素已满,不能再继续添加.\n");
return;
}
*(S->top) = value;
S->top++;
printf("-入栈成功\n");
}
void Pop(SqStack* S,int* value)
{
if(S->top == S->base)
{
printf("栈中无元素,不能再进行出栈操作.\n");
return;
}
*value = *((S->top)-1);
S->top--;
printf("出栈成功\n");
}
void StackTraverse(SqStack S)
{
if(S.base == S.top){
printf("此栈为空。\n");
return;
}
int* start = S.base;
int num = 1;
while(start != S.top)
{
printf("元素%d的值为:%d\n",num,*start);
num++;
start++;
}
}
C语言数据结构-栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作的更多相关文章
- C语言数据结构-链式队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-链式队列的实现-C语言 typedef struct QNode { int data; struct QNode *next; }QNode,*QueuePtr; typedef st ...
- C语言数据结构-循环队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...
- C语言数据结构-队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-队列的实现-C语言 //队列的存储结构 #define MAXSIZE 100 typedef struct { int* base; //基地址 int _front; //头指针 i ...
- C语言数据结构-链式栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作
1.数据结构-链式栈的实现-C语言 //链式栈的链式结构 typedef struct StackNode { int data; struct StackNode *next; } StackNod ...
- 【转】【数据结构】【有n个元素依次进栈,则出栈序列有多少种】
卡特兰数 大神解释:https://blog.csdn.net/akenseren/article/details/82149145 权侵删 原题 有一个容量足够大的栈,n个元素以一定的顺序 ...
- 剑指Offer20 栈的压入弹出序列是否正确
/************************************************************************* > File Name: 20_IsPopO ...
- C语言数据结构——第三章 栈和队列
三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...
- php 栈、 出栈、入栈
最近在面试的时候被问到栈,回来做个总结,希望对大家有帮助 栈是线性表的一种,他的特点是后入先出,可以这么理解,栈就像一个存东西的盒子,先放进去的在最底层,后放进去的在上层,因为上层的东西把底层的东西压 ...
- 【NOJ2024】入栈序列和出栈序列
入栈序列和出栈序列 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:293 测试通过:68 比赛描述 给出入栈序列 ...
- n个元素进栈,共有多少种出栈顺序?
1.基于栈的问题分析 我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出: f(1) = 1 / ...
随机推荐
- DripRoad(点滴之路)
关于DripRoad DripRoad 意为点滴之路,程序员之路在于点滴积累!是的,这些积累包括技术能力,沟通能力,业务能力等等. 我 我是唐志伟,2009年一个人来上海,就读于上海医疗器械高等专 ...
- list()的相关问题
由php手册中可以看到对list的定义: list — 把数组中的值赋给一些变量,像 array() 一样,这不是真正的函数,而是语言结构.list() 用一步操作给一组变量进行赋值. array l ...
- samba Nginx
1.samba 2.nfs 3.crond 4.nginx ifconfig yum install net-tools -y ifconfig #查看所有已激活的网卡信息 ifconfig eth0 ...
- javascript——作用域与闭包
http://www.cnblogs.com/lucio-yr/p/4047972.html 一.作用域: 在函数内部:用 var 声明的表示局部变量,未用var的是全局变量. 作用域取决于变量定义时 ...
- office 2010打开doc文档报错:Word 在尝试打开文件时遇到错误
今天在百度文库中下载了几个文档,下载后发现无法打开.出现以下的提示框. 那么,使用多年office的我,这点小问题当然难不倒我啦. 这个问题是由于系统安全设置所导致的 ,所有我们只需要处理这个安全设置 ...
- PLM数据库迁移注意事项
需求: PLM应用程序与数据库是存放在同一台服务器上,现需要将数据库迁移到数据库服务器10.10.1.10中. 10.10.1.10中安装了三个实例,MSSQLSERVER.MSSQLSERVER_P ...
- [codeforces126B]Password
解题关键:KMP算法中NEXT数组的理解. #include<bits/stdc++.h> #define maxn 1000006 using namespace std; typede ...
- JavaScript中的匿名函数及函数的闭包(转)
JavaScript中的匿名函数及函数的闭包 https://www.cnblogs.com/wl0000-03/p/6050108.html 1.匿名函数 函数是JavaScript中最灵活的一种 ...
- 一个典型的PHP分页实例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 关于c#运算符的简单应用。。。
按套路,先罗列一下各种运算符. 运算符的分类: 算数: +-*/(加减乘除)%(取余,就是除不尽剩下的,77/10就余7),++(加加)--(减减) 关系:> < >= < ...