微调与更新栈

This commit is contained in:
2023-10-18 18:00:04 +08:00
parent bd56fdcd73
commit 37f331b842
8 changed files with 134 additions and 6 deletions

68
数据结构/栈/Stack.c Normal file
View File

@@ -0,0 +1,68 @@
/*
*@文件:Stack.c
*@作者:‘你遇了我’
*@time:2023/10/18
*@联系:QQ:321640253
*@版本:V1.0
*@描述:顺序泛型栈
*/
#include "Stack.h"
/*
* @简介:初始化一个栈
* @参数:
* *S栈结构体指针
* Maxsize栈容器的长度
* NodeSize:栈容器每个元素的空间大小
* *container容器指针
* @返回值:无
* */
void InitStack(SqStack *S,uint16_t MaxSize,uint16_t NodeSize) {
S->container = calloc(MaxSize,NodeSize);
S->Top=-1;
S->MaxSize=MaxSize;
S->NodeSize=NodeSize;
S->size = 0;
}
/*
* @简介:进栈
* @参数:
* *S栈结构体指针
* @返回值:可进栈空间地址
* */
void *PushStack(SqStack *S) {
if(S->size>=S->MaxSize)return NULL;
S->Top++;
S->size++;
return S->container + S->Top*S->NodeSize;
}
/*
* @简介:出栈
* @参数:
* *S栈结构体指针
* @返回值:出栈元素地址空间
* */
void *PopStack(SqStack *S) {
if (S->size == 0) {
return NULL;
}
S->Top--;
S->size--;
return S->container+S->Top*S->NodeSize;
}
/*
* @简介:销毁栈
* @参数:
* *S栈结构体指针
* @返回值:无
* */
void DestroyStack(SqStack *S) {
free(S->container);
S->container = NULL;
S->Top = -1;
S->MaxSize = 0;
S->size = 0;
}

31
数据结构/栈/Stack.h Normal file
View File

@@ -0,0 +1,31 @@
/*
*@文件:Stack.h
*@作者:‘你遇了我’
*@time:2023/10/18
*@联系:QQ:321640253
*@版本:V1.0
*@描述:顺序泛型栈
*/
#ifndef _STACK_H_
#define _STACK_H_
#include <stdlib.h>
#include <stdint.h>
typedef struct {
void *container;
uint16_t size;
uint16_t MaxSize;
uint16_t NodeSize;
int Top;
} SqStack;
/**********************函数声明区************************/
void InitStack(SqStack *S,uint16_t MaxSize,uint16_t NodeSize); //初始化栈
void *PushStack(SqStack *S); //进栈
void *PopStack(SqStack *S); //出栈
void DestroyStack(SqStack *S); //销毁栈
#endif

23
数据结构/栈/main.c Normal file
View File

@@ -0,0 +1,23 @@
#include <stdio.h>
#include "Stack.h"
int main(){
int *a;
SqStack stack;
InitStack(&stack,20,sizeof(int));
for(int i=0;i<20;i++){
a=(int *)PushStack(&stack);
*a=i;
}
for(int i=0;i<20;i++){
printf("%d ",*(int *)(stack.container+i*stack.NodeSize));
}
return 0;
}

View File

@@ -4,7 +4,7 @@
*@time:2022/11/13
*@联系:QQ:321640253
*@版本:V1.3
*@描述:数组泛型队列。队列管理和容器空间分离
*@描述:顺序泛型队列
使用案例:
*/

View File

@@ -4,7 +4,7 @@
*@time:2022/11/13
*@联系:QQ:321640253
*@版本:V1.3
*@描述:数组泛型队列,队列管理和容器空间分离
*@描述:顺序泛型队列
使用案例
int main(){