c++顺序栈和链式栈的实现

本文详细介绍了如何使用C++实现顺序栈和链式栈,包括链式存储结构和顺序栈的具体操作实现。
摘要由CSDN通过智能技术生成
基本定义:

栈(Stack)是n个元素a1,a2,…an,组成的有限序列,记作S =(a1,a2,…,an),并且只能在一端插入和删除元素,n=0时称为空栈。

栈的特征:

由于栈只能从一端插入和删除元素,故栈具有后进先出(Last in,first out,LIFO)的特性。称插入和删除的一端为栈顶(top),另一端为栈底(bottom)。称插入元素为入栈或压栈(push),删除元素为出栈或弹栈(pop)。

栈的基本运算定义:

栈初始化:Init_Stack()  初始条件:栈不存在  操作结果:构造了一个空栈 判断空: Empty_Stack()  若栈空,则返回为1,否则返回0 
入栈:   Push_Stack(S,x)    初始条件:栈S已经存在  操作结果:在栈S的顶部插入一个元素x,这样x就、成为新的栈顶元素。 
出栈:   Pop_Stack(S,&x)   初始条件:栈S存在且不为空  操作结果:栈S的顶部元素从栈顶删除,保存在变量x中 
取栈顶元素: GetTop_Stack(S)  初始条件:栈s存在且不为空  操作结果:返回栈S的栈顶元素,且原栈的结构不会变化 
销毁栈:     Destory_Stack(S) 初始条件:栈S已经存在  操作结果: 销毁一个已经存在的栈 
栈的存储方式:(1)顺序存储 (2)链式存储 


下面分别实现这两种栈的存储方式:


1、链式存储


// 栈.cpp : 定义控制台应用程序的入口点。
//实现栈的创建,增、删、查、改


#include "stdafx.h"
#include<iostream>
#include<ctype.h>
using namespace std;


typedef struct node
{
	int data;
	struct node *next;
}Dnode;


//初始化栈
void InitStack(Dnode *&S)
{
	Dnode *top;
	top = (Dnode*)malloc(sizeof(Dnode));
	if (top == NULL)
	{
		cout << "内存分配失败!" << endl;
		exit(0);
	}
	top->next = NULL;
	S = top;
}


//向栈中添加数据,输入非数字结束
void InitData(Dnode *S)
{
	Dnode *top=S,*p;
	
	int e;
	int i = 1;
	cout << "请输入第"<<i++<<"个数据:" ;
	cin >
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值