IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 数组栈 C语言 数组 数据结构 -> 正文阅读

[C++知识库]数组栈 C语言 数组 数据结构

?可以看做一种特殊的?数组?,所以我使用第一节实现的?动态数组?来实现栈这种数据结构。当然,栈也可以通过其他方式来实现。因为该栈是通过动态数组实现的,所以称之为?数组栈?。

栈的结构如上图所示,可知栈的基本特性如下:
1.?有?栈顶?和?栈底?两端。
2.入栈?和?出栈?操作只能从?栈顶?进行。
3.后?入栈?的先?出栈?,即?后进先出(Last In First Out),LIFO?。

程序演示? ? 将0-9分别入栈再出栈

#include<stdio.h>
#include<stdlib.h>  //快速注释多行:Ctrl +K 然后 Ctrl + C  
#include<string.h>      
#define Max 10
typedef int dataType;       //此处必须加分号		
typedef struct mystack      //写一个栈不可能单独处理一种类型的数据
{                           //使用 typedef 为现有类型创建别名,给变量定义一个易于记忆且意义明确的新名字
	int top;
	dataType  *stack; //   int  *stack
}STACK,*LPSTACK;  // LPSTACK 结构体指针


// 初始化栈
LPSTACK initstack()
{

	LPSTACK  mytempstack=(LPSTACK) malloc (sizeof(STACK));  //结构体指针  创建一个栈

	// 数据成员初始化 分配内存
	mytempstack->stack =(dataType*)malloc(sizeof(dataType)*Max);
	mytempstack->top =-1;  // 不能使用.   结构体变量用 . 运算符来访问结构体的成员
	                       // 指向结构体的指针用->来访问其指向的结构体的成员
	return mytempstack;    //可以使用 memset()函数初始化 也可以不初始化
}


//入栈操作函数
void push(LPSTACK mytempstack  ,dataType  data)  //入的哪一个栈 入的哪一个数据
{

	if(mytempstack->top  >=  Max)
	{
		printf("栈满,无法入栈\n");
		return  ;//结束函数 return是使整个函数返回 当然可以用return中断程序。
	}
	else
	{
	    mytempstack->stack [++mytempstack->top]=data;    //stack是指针
	    printf("入栈数字为%d\n",data);
	}
}



// 出栈操作函数
void pop(LPSTACK mytempstack)
{

	if(mytempstack->top ==-1)
	{
		printf("栈空,无法出栈");
		return  ;//结束函数 return是使整个函数返回 当然可以用return中断程序。
	}


	else
		//mytempstack->stack [--mytempstack->top];    //stack是指针
		--mytempstack->top;
}



// 获取元素
dataType getTop(LPSTACK mytempstack)
{
	return mytempstack->stack [mytempstack->top];
}



//判断栈是否空了
int  isEmpty(LPSTACK mytempstack)
{
	if(mytempstack->top ==-1)
		return 1;
	else
		return 0;
}


int main()
{
	int i=0;
	LPSTACK mystack1=initstack();
	/*push(mystack1,1);
	push(mystack1,4);
	push(mystack1,5);
	push(mystack1,6);*/
	for(i=0;i<10;i++)
		push(mystack1,i);
	while(!isEmpty(mystack1))
	{

		printf("从栈弹出的数据是%d\n",getTop(mystack1));
	    pop(mystack1);
	}
	system("pause");
	return 0;
}

调试结果

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 13:38:17  更:2021-12-08 13:40:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:56:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码