链栈的实现 c++ .

2024-04-26 10:58
文章标签 c++ 实现 链栈

本文主要是介绍链栈的实现 c++ .,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

贴上自己的代码!!!!

#include <iostream>
using namespace std;

class LinkStack
{
 public:
  LinkStack()
  {
   top = NULL;
  }
  ~LinkStack();
  
  void Push(int x);
  
  void Pop();
  
  int GetTop()  //取顶操作
  {
   if(top != NULL)
   {
    return top->data;
   }
  }
  
  bool Empty()  //判空操作
  {
   if(top == NULL)
    return 1;
   else
    return 0;
  }
  
  LinkStack *next;
  private:
   LinkStack *top;
   int data;
};


//链栈的入栈
void LinkStack::Push(int x)
{
 LinkStack *s = new LinkStack;
 s -> data = x;
 s -> next = top;
 top = s;
}


//链栈的出栈
void LinkStack::Pop()
{
 LinkStack *p;
 int x;
 if(top == NULL)
  cout<<"发生下溢!"<<endl;
 while(top)
 {
  x = top -> data;
  p = top;
  top = top -> next;
  cout << x << " ";
 }
 cout<<endl;
}
//释放链栈中所有结点的存储空间
LinkStack::~LinkStack()
{
 LinkStack *p = new LinkStack;
 while(top)
 {
  p = top -> next;
  delete top;
  top = p;
 }
}

int main()
{
 LinkStack Stack;
 int n;
 while(cin >> n, n)
 {
  Stack.Push(n);
 }
 
 int ss;
 ss = Stack.GetTop();
 cout << "栈顶元素为:";
 cout << ss << endl;
 
 int qq;
 qq = Stack.Empty();
 cout << "栈是否为空(0表示非空 1表示空):";
 cout << qq << endl;
 
 cout<<"出栈的元素为:";
 Stack.Pop();

 return 0;
}

贴上别人的代码!!

#include <iostream>  
#include <string>  
using namespace std; 
 
struct Data 

public: 
    int bookNum; 
    Data * next; 
}; 
//链栈的初始化  
Data* SeqStackInit() 

    Data *top = new Data; 
    top = NULL; 
    return top; 

 
//链栈的判空  
int SeqStackEmpty(Data* s) 

    if (NULL == s) 
    { 
        return true; 
    } 
    else 
        return false; 
     

 
//链栈的入栈  
Data * SeqStackPush(Data* s, int x) 

    Data* s1 = new Data; 
    s1->bookNum = x; 
    s1->next = s; 
    s = s1; 
    cout<<"入栈元素:"<<s->bookNum<<endl; 
    return s; 

 
//链栈的出栈  
Data * SeqStackPop(Data* s) 

    if (NULL != s) 
    { 
    int x; 
    Data * p = new Data;  
    p = s; 
    x = s->bookNum; 
   cout <<"出栈元素:"<<s->bookNum<<endl; 
    s = s->next; 
    delete(p); 
    return s; 
    } 

 
//链栈中取出栈顶元素  
int SeqStackGetTop(Data* s) 

    if (NULL != s) 
        return s->bookNum; 

 
//链栈的长度  
int SeqStackLength(Data* s) 

    int length = 0; 
    Data* s1 = s; 
    //cout <<s->bookNum<<endl;  
    while(NULL != s1) 
    { 
        length++; 
        s1 = s1->next; 
    } 
    return length; 
     

int main() 

    Data* s = SeqStackInit(); 
    cout <<"判空操作:"<<SeqStackEmpty(s)<<endl; 
    cout <<"入栈操作:"<<endl; 
    s = SeqStackPush(s,12); 
    s = SeqStackPush(s,23); 
    s = SeqStackPush(s,4);  
    s = SeqStackPush(s,78);  
    s = SeqStackPush(s,3); 
    cout <<"栈顶元素:"<<SeqStackGetTop(s)<<endl; 
    cout <<"栈的长度:"<<SeqStackLength(s)<<endl; 
    cout <<"出栈操作:"<<endl; 
    s = SeqStackPop(s); 
    cout <<"判空操作:"<<SeqStackEmpty(s)<<endl; 
    cout <<"栈的长度:"<<SeqStackLength(s)<<endl; 
    cout <<"栈顶元素:"<<SeqStackGetTop(s)<<endl; 
    return 0; 

这篇关于链栈的实现 c++ .的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937405

相关文章

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S