数据结构:栈的顺序存储(三)
来源:互联网 发布:杭州淘宝网汽车拍卖 编辑:程序博客网 时间:2024/06/10 14:32
#if 0-------------------------------------------------- 将栈的返回类型和参数封装为void *类型 ---------------------------------------------------#endif --------------------------------------------------------------- SeqStack.h -------------------------------------------------------------#pragma once#define true 1#define false 0#include<stdio.h>#include<stdlib.h>#include <string.h>#define MAXSIZE 1024typedef void* SeqList;/***** 栈的顺序存储 ******/typedef struct SeqStack { void * base[MAXSIZE]; //1024 int size; }SeqStack;#ifdef __cplusplusextern "C"{#endif/********栈的初始化*********/SeqList InitSeqStack();/*********压栈操作*********/void PushSeqStack(SeqList stack,void *data);/*********弹栈操作********/void PopSeqStack(SeqList stack);/*********获取栈顶元素*********/void *GetTopSeqStack(SeqList stack);/*********销毁栈操作*********/void DestorySeqStack(SeqList stack);/**********获取栈大小********/void GetLenSeqStack(SeqList stack);#ifdef __cplusplus }#endif------------------------------------------------------------- SeqStack.c ---------------------------------------------------------#include "SeqStack.h"/********栈的初始化*********/SeqList InitSeqStack() { SeqStack *stack = NULL; stack = (SeqStack*)malloc (sizeof(SeqStack)); memset(stack->base,0,sizeof(void *)*MAXSIZE); stack->size = 0; return stack; }/*********压栈操作*********/void PushSeqStack(SeqList stack,void *data) { /***vs12不支持***/ SeqStack *myStack = (SeqStack*)stack; if (NULL == stack || NULL == data) { return; } if (myStack->size > MAXSIZE) { return; } myStack->base[myStack->size++] = data; return; }/*********弹栈操作********/void PopSeqStack(SeqList stack) { SeqStack *myStack = NULL; if (NULL == stack) { return; } myStack = (SeqStack*)stack; if (myStack->size<0) { return; } //myStack->base[myStack->size--]; myStack->size--; return; }/*********获取栈顶元素*********/void *GetTopSeqStack(SeqList stack) { SeqStack *mPstack = NULL; if (NULL == stack) { return NULL; } mPstack = (SeqStack *)stack; if (mPstack->size <= 0) { return NULL; } return mPstack->base[mPstack->size-1]; }/*********销毁栈操作*********/void DestorySeqStack(SeqList stack) { if (NULL == stack) { return; } free (stack); stack = NULL; return; }/**********获取栈大小********/void GetLenSeqStack(SeqList stack) { SeqStack *mPtr = NULL; if (NULL == stack) { return; } mPtr = (SeqStack *)stack; if (mPtr->size <= 0) { return; } printf ("%d\n",mPtr->size); }----------------------------------------------------------------- main.c --------------------------------------------------------------------#include "SeqStack.h"typedef struct Person { char name[24]; int age; }Seqnode;void muFunc() { SeqStack *mPtr = NULL; Seqnode s1 = {"lixiaogang",24}; Seqnode s2 = {"wangzhe",21}; Seqnode s3 = {"huatianc",23}; Seqnode s4 = {"huppu",22}; Seqnode s5 = {"suomi",25}; /***初始化链表**/ mPtr = InitSeqStack (); PushSeqStack (mPtr,&s1); PushSeqStack (mPtr,&s2); PushSeqStack (mPtr,&s3); PushSeqStack (mPtr,&s4); PushSeqStack (mPtr,&s5); GetLenSeqStack (mPtr); PopSeqStack (mPtr); PopSeqStack (mPtr); PopSeqStack (mPtr); PopSeqStack (mPtr); PopSeqStack (mPtr); GetTopSeqStack (mPtr); GetLenSeqStack (mPtr); DestorySeqStack (mPtr);#if 0 /**************/ /*********弹栈操作********/ void PopSeqStack(SeqList stack); /*********获取栈顶元素*********/ void *GetTopSeqStack(SeqList stack); /*********销毁栈操作*********/ void DestorySeqStack(SeqList stack);#endif }int main(void) { muFunc(); system("pause"); return 0; }
1 0
- 数据结构:栈的顺序存储(三)
- 数据结构三栈的顺序存储结构
- 进击的数据结构三之栈的顺序存储结构
- 数据结构:栈的顺序存储(二)
- 数据结构:栈的顺序存储
- 数据结构-栈的顺序存储
- 数据结构-栈的顺序存储
- 数据结构---栈---顺序存储
- 数据结构(第三天) 栈的顺序存储
- 数据结构 栈的顺序存储结构
- 常用数据结构之顺序存储的栈
- 数据结构:栈的顺序存储结构
- 数据结构:栈的顺序存储实现
- 数据结构--栈的顺序存储
- 数据结构之栈的顺序存储表示
- 数据结构:栈的顺序存储结构
- 数据结构——栈的顺序存储
- 数据结构学习---线性表顺序存储结构的应用(三):融合排序操作
- URL +io 进行使用 -后台使用现有接口进行调用。
- CLR via C# 第6章
- java基础总结21-java集合
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
- 从RGB色转为灰度色算法
- 数据结构:栈的顺序存储(三)
- 模拟退火算法
- LightOJ
- Java 8 函数式接口、lambda表达式、方法以及构造器引用
- Loi Online Judge 42. 「Loi57 test 2017.4.22」字符串
- 绘制智能变换圆角及椭圆
- NS3 Tracing System详解
- 上传图片(用transferTo)
- SSM杰信商务平台项目day06