当前位置:网站首页>C语言--顺序栈
C语言--顺序栈
2022-06-09 12:11:00 【山居秋暝LS】
2.1 栈--顺序栈
1.main.c
//
// main.c
// 7_SqueStack
//
// Created by ls on 2022/5/19.
// Copyright 2022 LSC001. All rights reserved.
//
#include "SqueStack.h"
int main() {
SqueStack mystack;
InitStack(&mystack);
int select=1;
ElemType value=0;
while(select)
{
printf("********************************************\n");
printf("* [1] push_back [2] pop_back *\n");
printf("* [3] show_Stack [4] stackEmpty *\n");
printf("* [5] get_top [6] length *\n");
printf("* [7] clear [8] destroy *\n");
printf("********************************************\n");
printf("请选择:> ");
scanf("%d",&select);
if(0 == select)
break;
switch (select)
{
case 1:
printf("Please input a number(-1 end): ");
while(scanf("%d",&value),value!= -1)
{
push_back(&mystack,value);
}
show_Stack(&mystack);
break;
case 2:
pop_back(&mystack,&value);
show_Stack(&mystack);
break;
case 3:
show_Stack(&mystack);
break;
case 4:
printf("Empty: %ld\n",stackEmpty(mystack));
break;
case 5:
get_top(mystack);
break;
case 6:
printf("length: %ld\n",length(mystack));
break;
case 7:
clear0(&mystack);
break;
case 8:
destroy(&mystack);
break;
default:
printf("输入错误!");
break;
}
}
destroy(&mystack);
printf("Hello, World!\n");
return 0;
}
2.SqueStack.h
//
// SqueStack.h
// 7_SqueStack
//
// Created by ls on 2022/5/19.
// Copyright 2022 LSC001. All rights reserved.
//
#ifndef SqueStack_h
#define SqueStack_h
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
// 1 定义宏
#define MAXSTACK 5
typedef int ElemType;
// 2 定义栈
typedef struct SqueStack
{
ElemType *base,*top;
int stacksize;
}SqueStack;
// 3 函数声明
void InitStack(SqueStack *stack);
void push_back(SqueStack *stack,ElemType num); // 1
void pop_back(SqueStack *stack,ElemType *num); // 2
void show_Stack(SqueStack *stack); // 3
void get_top(SqueStack stack); // 4
long stackEmpty(SqueStack stack); // 5
long length(SqueStack stack); // 6
void clear0(SqueStack *stack); // 7
void destroy(SqueStack *stack); // 8
#endif /* SqueStack_h */
3.SqueStack.c
//
// SqueStack.c
// 7_SqueStack
//
// Created by ls on 2022/5/19.
// Copyright 2022 LSC001. All rights reserved.
//
#include "SqueStack.h"
void InitStack(SqueStack *stack)
{
stack->base = (ElemType*)malloc(MAXSTACK*sizeof(ElemType));
assert(stack->base != NULL);
stack->top = stack->base;
stack->stacksize = MAXSTACK;
}
void push_back(SqueStack *stack,ElemType num) // 1
{
if(stack->top - stack->base == stack->stacksize) return;
*(stack->top++) = num;
}
void pop_back(SqueStack *stack,ElemType *num) // 2
{
if(stack->top == stack->base ) return;
*num = *(--(stack->top));
}
void show_Stack(SqueStack *stack) // 3
{
if(stack->top - stack->base == stack->stacksize) return;
ElemType *p= stack->base;
while (p != stack->top) {
printf("%d,",*p++);
}
printf("\n");
}
long stackEmpty(SqueStack stack) // 4
{
if(stack.top == stack.base )
{
return 1;
}
else
{
return 0;
}
}
void get_top(SqueStack stack) // 5
{
if(! stackEmpty(stack)) printf("%d\n",*(stack.top-1));
}
long length(SqueStack stack) // 6
{
return stack.top - stack.base;
}
void clear0(SqueStack *stack) // 7
{
stack->top = stack->base;
}
void destroy(SqueStack *stack) // 8
{
free(stack->base);
stack->top = stack->base=NULL;
}
边栏推荐
- Taoist friend, what is the relationship between your use of redis in the project and the three Virgin Mary?
- Handlebars template engine usage 2
- 数据库day-4
- ES6基础语法知识
- cache 跟 TLB
- 【Memcached和Redis】
- 工程师应该了解的模态分析基础知识
- Warning: Accessing non-existent property ‘column‘ of module exports inside circular depen
- C语言中的数组、字符串、函数、结构体
- NLM5中继采集采发仪如何才能更省电?
猜你喜欢

Image matrix transformation in gdi+

谁说Redis不能存大key
![Live broadcast preview | database salon – [special session on open source ecology]](/img/e2/abc3922b8f99e52146dd89e2a13122.png)
Live broadcast preview | database salon – [special session on open source ecology]

【Unity TMP外部字体导入问题】TMP中文,将字体生成为TMP_FontAsset常见问题

GDI+ 中区域的使用
![[STM32] Hal library CRC verification](/img/6f/51e60fe96c61dd04cae37b4f96954d.png)
[STM32] Hal library CRC verification
GDI+ 中路径类使用总结

cpu使用率彪高以及top命令详解

. Net basic knowledge quick pass 8

High CPU utilization and detailed explanation of top command
随机推荐
Gaussdb (for redis) new feature release: prefix search thousand fold promotion and cluster multi tenancy isolation
cpu使用率彪高以及top命令详解
ep240--all
[detailed explanation of client list]
工程師應該了解的模態分析基礎知識
Image matrix transformation in gdi+
【论文写作】AI会议引用格式、出版地、出版社
[STM32] Hal library ADC
Handlebars template engine usage 2
【 Loki简介,部署,使用 】
WPF中控件单击双击冲突的解决方案
stc8a8k_ rgb___ Led 888 test code, not tested yet
生词 生词 生词 生词 生词 生词 生词
Live broadcast preview | database salon – [special session on open source ecology]
ep240--all
LeetCode-732. My schedule III, differential array
【 Redis底层机制解读:linux操作系统文件描述符FD 】
Keil5mdk installation (free)
[001] 一天一句长难句分析
Detailed explanation of LP mobile mining system development ecosystem