数据结构第六次作业:栈

栈是一种具有特定操作方式的数据结构,它遵循后进先出的原则。栈虽然数据结构简单,但在计算机领域应用广泛。栈的基本操作通常包括:

1.压栈:向栈顶添加一个新元素。

2.弹栈:移除栈顶的元素,并通常返回被移除的元素的值。

3.查看栈顶元素:返回栈顶元素的值,但不移除它。

4.判断栈是否为空:检查栈中是否包含任何元素。

代码如下:

#include<iostream>
using namespace std;

#define STACK_MAX_SIZE 10

//定义数据结构
typedef struct CharStack {
	int top;

	int data[STACK_MAX_SIZE];
} *CharStackPtr;

//输出
void outputStack(CharStackPtr paraStack) {
	for (int i = 0; i <= paraStack->top; i++) {
		printf("%c ", paraStack->data[i]);
	}
	printf("\r\n");
}

//初始化
CharStackPtr charStackInit() {
	CharStackPtr resultPtr = (CharStackPtr)malloc(sizeof(struct CharStack));
	resultPtr->top = -1;
	return resultPtr;
}

//压栈
void push(CharStackPtr paraStackPtr, int paraValue) {
	if (paraStackPtr->top >= STACK_MAX_SIZE - 1) {
		printf("Cannot push element: stack full.\r\n");
		return;
	}

	paraStackPtr->top++;

	paraStackPtr->data[paraStackPtr->top] = paraValue;
}

//出栈
char pop(CharStackPtr paraStackPtr) {
	if (paraStackPtr->top < 0) {
		printf("Cannot pop element: stack empty.\r\n");
		return '\0';
	}

	paraStackPtr->top--;
	return paraStackPtr->data[paraStackPtr->top + 1];
}

void pushPopTest() {
	printf("---- pushPopTest begins. ----\r\n");
	char ch;
	CharStackPtr tempStack = charStackInit();
	printf("After initialization, the stack is: ");
	outputStack(tempStack);

	for (char ch = 'a'; ch < 'm'; ch++) {
		printf("Pushing %c.\r\n", ch);
		push(tempStack, ch);
		outputStack(tempStack);
	}

	for (int i = 0; i < 3; i++) {
		ch = pop(tempStack);
		printf("Pop %c.\r\n", ch);
		outputStack(tempStack);
	}

	printf("---- pushPopTest ends. ----\r\n");
}

void main() {
	pushPopTest();
}

73b0bf35b7484dfc973d3aa5408e61d7.png

0c1e77351f44434bb466c359fdec8d07.png 

end 

 

相关推荐

  1. 数据库作业

    2024-04-27 20:36:02       36 阅读
  2. 数据库作业

    2024-04-27 20:36:02       43 阅读
  3. 数据库作业

    2024-04-27 20:36:02       38 阅读
  4. [数据结构] 和队列C++作业

    2024-04-27 20:36:02       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 20:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 20:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 20:36:02       82 阅读
  4. Python语言-面向对象

    2024-04-27 20:36:02       91 阅读

热门阅读

  1. 深度学习框架TensorFlow和PyTorch的选取

    2024-04-27 20:36:02       31 阅读
  2. qt中的取整函数

    2024-04-27 20:36:02       29 阅读
  3. Flutter 音视频播放器与弹幕系统开发实践

    2024-04-27 20:36:02       30 阅读
  4. kkkkkk

    2024-04-27 20:36:02       24 阅读
  5. 每天一个数据分析题(二百九十六)

    2024-04-27 20:36:02       32 阅读
  6. 如何安装、利用、激活、禁用pytest插件

    2024-04-27 20:36:02       32 阅读
  7. pytest测试之conftest详解

    2024-04-27 20:36:02       27 阅读
  8. linux驱动-CCF-3-consumer 接口

    2024-04-27 20:36:02       33 阅读
  9. linux常用命令

    2024-04-27 20:36:02       29 阅读
  10. Linux CentOS 本地yum配置

    2024-04-27 20:36:02       35 阅读
  11. VGG网络

    2024-04-27 20:36:02       30 阅读
  12. docker-compse安装fastdfs

    2024-04-27 20:36:02       28 阅读
  13. PostCSS详细介绍

    2024-04-27 20:36:02       30 阅读