栈和数组
来源:互联网 发布:saa7134hl采集卡软件 编辑:程序博客网 时间:2024/05/16 12:02
<span style="background-color: rgb(255, 255, 204);"><strong>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <malloc.h>#include<assert.h>typedef struct Stack{ int nTop; int nLen; int *pnArr; //存储的是栈的值,nvalue}Stack, *PStack; //定义一个栈对象,包含栈的长度,栈头的nTop指第n个元素,最大个数不超过nLen,//初始化栈 nLen为栈的大小PStack Create(int nLen) //建立栈就像是,开辟一个能存储n个数的内存空间, //我们可以随时查看内存空间存储了几个数据nTop,以及内存能存储数据的总个数nLen{ if (nLen <= 0) { return NULL; } PStack pStack = (PStack)malloc(sizeof(Stack)); //开辟一个栈空间内存,包含三个元素,nTop,nLen,*pnArr,三个元素 pStack->nTop = 0; //栈头=0,表示不包含任何元素,栈是空的,s[1]表示栈低元素 pStack->nLen = nLen; pStack->pnArr = (int *)malloc(sizeof(int) * nLen); //表示存储的nlen的int值得内存长度,用于存储数据 return pStack; }bool IsEmpty(PStack pStack){ return pStack->nTop == 0;}bool IsFull(PStack pStack){ return pStack->nTop == pStack->nLen;}void Push(PStack pStack, int nValue){ if (pStack->nTop == pStack->nLen) //如果栈顶指向的第几个元素等于栈的长度,,,则栈是满的 { printf("栈已满!\n"); return; } pStack->pnArr[pStack->nTop] = nValue; //pnArr用于存储元素,就像数组一样,,,数组的第n个地址存储第n个元素,,,,数组总存储数据的个数不超过nlen pStack->nTop++; //没入栈一次,数组的索引增加1,用于在下一个地址存储下一个数值}int Pop(PStack pStack){ if (pStack->nTop == 0) //判断栈中元素的个数是不是为0,如果是表示栈是空栈 { printf("栈为空!\n"); } else { pStack->nTop--; //出栈后,栈中的元素个数少一个 return pStack->pnArr[pStack->nTop]; } }void Destroy(PStack pStack){ free(pStack->pnArr); pStack->pnArr = NULL; free(pStack); pStack = NULL; //销毁栈,主要是销毁指针,让栈中元素指向NULL,表示空内存}int main(){ PStack pStack = Create(10); //建立一个栈空间,用于存储元素值 int i; for (i = 0; i < 12; i++) { Push(pStack, i); } for (i = 0; i < 10; i++) { printf("%d ", Pop(pStack)); } Destroy(pStack);system("pause"); return 0;}</strong></span>
0 0
- 栈和数组
- 数组模拟队列和栈
- 数组结构-栈和队列
- 数组和数组转化
- 数组和数组函数
- 数组和链表、栈和队列
- c++实现数组栈和链式栈
- stack栈和stack栈数组
- 使用数组和范型来实现栈结构?
- 栈的实现--键表和数组
- 栈的数组和链表实现
- 1021. Couples 栈和数组的实现
- 使用数组和底层容器实现栈
- 栈中数组和指针区别
- 栈的数组和链表实现
- 数据结构03_栈、队列和数组
- 用数组 和 链表 构建栈
- js数组栈和队列的方法
- 在学习单例模式关于单例数据更新遇到个BUG!(错误)
- git基础使用方法整理
- jquery一些记录(老是搞忘函数用法,规则)
- hive 的一次使用命令
- HTTP网络协议(二)
- 栈和数组
- PHP读取网页文件内容的实现代码(fopen,curl等)
- Java 8/27
- mysql各版本编译安装
- 汇编指令状态寄存器访问指令(MRS,MSR)
- C语言 文件单词的检索与计数
- intents 和 intent过滤器(一)
- 了解mysql的源码目录及源文件
- Android中自定义控件的步骤