算法基础(一):栈
来源:互联网 发布:同程网络 编辑:程序博客网 时间:2024/03/29 14:44
// DataStructure_ZJC.cpp : 定义控制台应用程序的入口点。/*一. 栈学习 */#include "stdafx.h"#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define TRUE 1 #define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int ElemType;//元素类型typedef int Status;//函数返回值#define STACK_INIT_SIZE 100// 栈的初始大小#define STACK_INCREMENT 10// 每次增加的空间大小typedef struct{ElemType *base;//在构造栈之前和销毁之后,base的值为NULLElemType *top;//栈顶指针ElemType stacksize; //当前已分配的存储空间,以元素为单位}ZJC_Stack;//---------------------------------------------栈基本操作的算法部分-------------------------------------------//栈的初始化Status InitStack(ZJC_Stack &S){//构造一个空栈S.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));//分配内存空间if(!S.base)//分配失败则退出exit(OVERFLOW);//否则分配成功else{S.top = S.base;//栈顶指针指向...S.stacksize = STACK_INIT_SIZE;//指定栈的当前大小return OK;}}//获得栈顶元素Status GetTop(ZJC_Stack S,ElemType &e){if(S.top == S.base )return ERROR;e = *(S.top - 1);return OK;}//压栈Status Push(ZJC_Stack &S,ElemType e){//插入元素e为栈顶元素if(S.top - S.base >= S.stacksize)//表示栈满了,需要追加存储空间{S.base = (ElemType*)realloc(S.base,(S.stacksize + STACK_INCREMENT) * sizeof(ElemType));if(!S.base)exit(OVERFLOW);S.stacksize += STACK_INCREMENT;///////////////////////////////////S.top = S.base + S.stacksize;}*S.top++ = e;return OK;}void Print_Stack(ZJC_Stack S)//打印出栈中的元素{ElemType *p = S.base;//首先p指向栈底指针printf("\n 打印出栈中的所有元素:...\n");while( p != S.top)//只要没有到顶端,指针就移动,然后输出元素值{printf("栈中的元素:%d\n",*p);p++;}}//出栈函数Status Pop(ZJC_Stack &S,ElemType &e){if(S.top == S.base)//空栈,返回错误return ERROR;else//不是空栈{e = * --S.top;return OK;}}int _tmain(int argc, _TCHAR* argv[]){ printf("栈学习,测试....");ZJC_Stack test_stack;int e;int i;if(InitStack(test_stack))//初始化栈,如果初始化成功,则压入元素,然后输出值,然后出栈{for( i = 0;i < 10;i++)Push(test_stack,i);//压入自然数 0~9printf("\n压栈完成...");Print_Stack(test_stack);//验证//出栈...printf("\n元素出栈...");for( i = 0; i< 10; i++){ if(Pop(test_stack,e)) printf("\n%d",e);}}return 0;}
1 0
- 算法基础(一):栈
- 基础算法(一) --- 前言
- (一) 算法设计基础
- 笔记一(算法基础)
- 算法学习一(基础)
- 算法基础(一)——基础
- 算法基础(一)——基础 .
- 算法基础学习(一)--基础复习
- 算法学习笔记(一)-算法基础
- 【贪心算法(一)】贪心算法基础
- SPH算法简介(一): 数学基础
- C语言算法(一)基础
- SPH算法简介(一): 数学基础
- 排序算法(一)基础概览
- 【翻译】计算机几何基础算法(一)
- 数据结构基础 查找算法(一)
- 数据结构与算法基础(一)
- 基础分类算法小结(一)
- 招聘培训之目标选才
- 内存结构-堆结构-内存分配函数
- javaSE-面向对象-异常
- JSON基础知识整理
- SSH中,不能删除数据,可以添加,修改,查找
- 算法基础(一):栈
- NStimer APIhttp://hi.baidu.com/douxinchun/item/920a7655fe7f3fd8d48bacaf
- node.js 事件乒乓
- 学生表/教师表/课程表/成绩表常见SQL查询
- eclipse4.3 安装不了m2e的egit connector的解决办法
- 银行密谋盘外招:余额宝收益率或大幅下滑
- java基础学习1
- iOS自定义带有placeholder的TextView(多行)
- Three20Core compile question 编译错误