c++ 语言程序设计(第四版)郑莉 用链表实现栈

[东南大学][C++][何洁月]教程内容: [东南大学][C++][何洁月]教程内容: 目录: 上部内容简介 第1讲:语言的发展与简介 第2讲:面向对象 第3讲:系统分析,进制 第4讲:程序开发过程,二进制补码 第5讲:C++概述,数据类型 第6讲:常量与变量 第7讲:接第6讲,运算符 第8讲:运算符 第9讲:接第8讲,控制结构 第10讲:控制结构 第11讲:控制结构 第12讲:控制结构 第13讲:循环结构嵌套 阅读详情

c++ 语言程序设计(第四版)郑莉 用链表实现栈

仿照着教材中用数组实现栈的程序写了一个用链表实现的栈,与原来的栈接口一样,可以用此Stack.h直接替换原来的文件运行计算器的程序,不过得把之前的"LinkedList.h"和"Node.h"添加到工程中。
不过我并没有检验这个栈的其他功能,没用验证别的逻辑错误,只是测试了一些简单的计算器的功能。水平有限,如果有错误还请指正,谢谢!

//Stack.h
//
// Created by LYH on 2020/6/20.
//

#ifndef STACK_H
#define STACK_H

#include <cassert>
#include "LinkedList.h"

template<class T , int SIZE = 50>
class Stack{
private:
    LinkedList<T> list;
    int top;
public:
    Stack();
    void push(const T &item);
    T pop();
    void clear();
    const T &peek() const;
    bool isEmpty() const;
    bool isFull() const;
};


template<class T , int SIZE>
Stack<T,SIZE>::Stack():top(-1) { }
//压栈和弹栈都是在链表的Front进行的
template<class T , int SIZE>
void Stack<T,SIZE>::push(const T &item) {
    assert(!isFull());
    list.insertFront(item);
    top++;
}

template<class T , int SIZE>
T Stack<T,SIZE>::pop(){
    assert(!isEmpty());
    list.reset();
    T temp=list.data();
    list.deleteFront();
    top--;
    return temp;
}

template<class T,int SIZE>
void Stack<T,SIZE>::clear(){
    top=-1;
    while(!list.isEmpty()){
        list.deleteFront();
    }
}

template<class T,int SIZE>
const T &Stack<T,SIZE>::peek() const{
    //list.reset();//保证链表的指针一直是在Front,与const冲突,注释后不影响
    return list.data();
}

template<class T , int SIZE>
bool Stack<T,SIZE>::isEmpty() const {
    return top == -1;
}

template<class T,int SIZE>
bool Stack<T,SIZE>::isFull() const {
    return top == SIZE - 1;
}
#endif //STACK_H

[内附完整源码和文档] 基于C语言的校运动会项目管理系统 前言 随着计算机技术的普及与提高,越来越多的人使用计算机,计算机以其强大的性能价格优势给人们的工作、学习和生活带来极大的方便.计算机代替人工处理一些事务已成为必然。整个人类社会已进入高度信息化,人们对信息和数据的利用和处理已经进入自动化、网络化和社会化的阶段。如在查找资料、处理日常办公事务、科研生产等方面,无不需要利用大量的信息资源。因此,如何有效地进行数据信息的管理和利用,已经成为人们普遍关注的课题。信息在不同的领域里有着不同的概念,在管理科学领域中,通常认为信息是经过加工处理后的一种数据形式,是一种有次 阅读详情

相关推荐

C++入门必学:郑莉《C++语言程序设计》课件全解析与实战指南

从C语言到面向对象,C++初学者常被指针、内存管理等底层概念困扰。理解程序操作内存的本质,是掌握C++核心技术的前提。指针作为间接寻址的基础,决定了链表、虚函数等高级特性的掌握深度;而数组的连续存储布局与字符串初始化规范,则是工程实践中避坑的关键。通过系统学习经典教材,配合环境搭建与算法练习,能有效将语法知识转化为项目能力。本文基于清华大学郑莉老师的《C++语言程序设计》课件,梳理指针、多维数组、字符串初始化、链表、排序算法、开发环境配置等核心知识,帮助读者构建完整C++学习路径。

weixin_31188927的博客 334

c++语言程序设计(第四版)郑莉链表的实现源码

#c++语言程序设计(第四版)郑莉链表的实现 程序是在GitHub上找到的,也不知道是不是教材提供的源码,原链接如下: 链接 但是我在这里面找到了一处错误,就是打印链表时不显示最后一个节点 //LinkedList.h #ifndef LINKEDLIST_H #define LINKEDLIST_H //#include <cstdio> #include <cassert> #include "Node.h" template<class T> class Lin

来时路 1638

用C++类实现链表的示例程序

C++类实现链表,定义ListNode和LinkedList两个类实现了链表的创建,插入,删除操作等。

面向对象程序设计C++——利用链表实现栈和队列(继承)

**【问题描述】**利用链表实现栈和队列 队列具有先进先出的特点,所有新来的元素都放在队列尾部,出队列的元素从队列头部出去。下面是队列的示意图: 栈具有后进先出的特点。所有入栈的元素都放在栈顶,出栈时栈顶元素先出。下面是栈的示意图: 这两种结构具有很多相似的地方:都存放了一系列的元素,元素的操作都在两头进行,元素个数都是动态可变的。我们可以设计一个基类,完成它们共同的功能,然后分别派生出队列类和栈类。本实验要求以上一个实验实现的链表类作为基类并设计它的两个派生类。 要求: (1) 在上一个实验实现的链表

ChristensonLee的博客 2004

C++ 链表类模板 清华大牛精心编写

由清华大学大牛写成的C++模板类,值得学习借鉴。链表可能是一种相对比较难于掌握的数据结构,或许这个文件能够帮助你更好地理解和使用链表。希望能够对你有所帮助。

清华大学郑莉C++课件 PPT及例题源码 参考程序

包括PPT,及例题源码,及实验程序 绝对的正确,不对找我

C++实现单链表【每一步详细深入讲解,代码清晰、简单、易懂】

例如:我们需要在伪头节点(不包含数据)和含有1的节点之间插入一个节点,发现,只需要改变dummy的指针和需要插入的指针即可。通过对插入和删除的讨论,我们了解到,插入调用find函数时,并不需要操作其返回值,所以,返回值具体是该元素的节点还是其前面的节点并没有影响;,而第一个节点的前一个节点是dummy,这也是为什么我们需要dummy这个伪头节点。,因此,删除操作时我们必须得到需要删除节点的前一个节点,因此。先将要添加的元素的指针指向dummy节点的后一个节点。将要添加节点的指针指向之前的下一个节点。

weixin_55755506的博客 6019

c++语言程序设计郑莉第四版 源代码 完整

完整的c++语言程序设计郑莉第四版源代码下载,内容详实,课后练习做起来美滋滋~~~

C++基础课—郑莉9-

函数模版与类模版的设计是为了代码重用,它通过参数多态化实现,就是将程序所处理的对象的类型参数化,使得一段程序可以用于处理多种不同类型的对象。需要注意1.函数模版在编译时不会产生目标代码,只有在实例化后才产生目标代码。2.被多个源文件引用的函数模版,应当将其函数体一同放入头文件中。3.函数指针只能指向函数模版的实例。使用类模版可以使用户为类定义一种模式,使类中的某数据成员、类中成员函数的参数、返回值、局部变量能取任意类型,包括系统类型和自己定义的类型。......

Bobowen的博客 737

Petalinux-2018.3添加内核驱动(linux-xlnx源码打补丁)

大部分模块可以直接使用,需要添加自己的驱动文件时,可以通过linux-xlnx源码打补丁方式和使用PetaLinux编译为.ko文件加载运行,本文章介绍通过linux-xlnx源码打补丁方式添加内核驱动文件。根据查找资料,了解到可以通过打补丁方式添加到工程文件中。. /opt/tool-pkg/petalinux/2018.3/components/yocto/source/arm/layers/core/oe-init-build-env (该执行文件在Petalinux软件安装路径下)

sanyuedtaifen的博客 1552

BIDS数据存储格式介绍与dcm2bids安装与使用

BIDS格式&dcm2bids安装与使用

machinelearning_er的博客 7310

清华郑莉C++语言程序设计学习笔记(5)-模板与群体数据、泛型程序设计与C++标准模板库

模板与群体数据、泛型程序设计与C++标准模板库

weixin_42194879的博客 1348

安时积分法和开路电压法结合估算锂电池SOC

基于安时积分法和开路电压法结合的锂电池SOC估计Simulink仿真建模,利用安时积分法计算放电过程中的SOC,在搁置状态利用开路电压法进行SOC修正。

qq_39304296的博客 2552

C++语言程序设计第五版 - 郑莉(第九章课后习题)

9-1 编写程序提示用户输入一个班级中的学生人数 n,再依次提示用户输入 n 个人在课程 A 中的考试成绩,然后计算出平均成绩,显示出来。请使用本书第 9 章中的数组类模板 Array定义浮点型数组存储考试成绩。...

weixin_51704442的博客 3895

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

UltraScale系列底层结构(3)——URAM概述

在UltraScale+™ 器件中,除了我们在常规熟悉的BRAM资源以外,还额外提供了URAM(UltraRAM)资源。 UltraRAM 是一种单时钟同步操作的高密度存储器,每个 UltraRAM 块可存储 288 Kb 数据,配置为 4K x 72 位的存储单元,其容量是 Block RAM 的八倍。虽然 UltraRAM 内部使用单端口存储单元,但通过在一个时钟周期内顺序执行端口 A 和端口 B 的操作,实现了双端口功能。

apple_53311083的博客 2831

C/C++学习准备、路线及推荐书籍

前言:C++是C语言的继承与拓展,C++是兼容C语言的(即在C++环境中可以出现用C语言编程的情况),就从这一方面而言学习C++之前应该把C语言先学透,因此学习C++的程序员有个这样的名字:C/C++工程师 C/C++学习内容概述 C/C++学习计划 学习计划1,环境准备(准备时间视情况而定) 1-1,准备一台电脑,8G以上的内存,cpu15以上,空闲硬盘容量若干 1-2,安装VmwareWorkstations并安装好操作系统(为学习linux准备的,有条件的可以租个服务器这...

qq_42591783的博客 709

AutoSAR系列讲解(实践篇)9.5-通信的数据映射

讲解了AppL中的数据与通信中的Signal的一个映射操作

雪云飞星的博客 1万+

C++进阶03 模板与群体数据

听课笔记简单整理,供小伙伴们参考~🥝🥝

weixin_42789937的博客 1031

python pyusb与硬件 下位机通信

python pyusb 与硬件 下位机 通讯

yuhang01的博客 951

基于Cesium实现,动态水面+大坝排水动画

一、绘制面状水域,使用水波纹理,进行渲染,水体透明,可以看到底色。三、使用粒子系统,将喷泉改变方向,加上重力设置,实现排水动画。二、绘制线状三维体,用作模拟大坝拦截效果。四、最后,模拟水位上升,进行淹没分析,

一醉千秋的专栏 1418

C++:使用本章中的链表类模板,声明两个int类型的链表a,b,分别插入5个元素,然后把b中元素加入a的尾部

c++语言程序设计第五版,郑莉,第九章模板与群体数据中习题9-5的一个题目

m0_64594973的博客 1380

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

单链表的结点类模板

C++语言程序设计进阶 (2015年秋)郑莉教授 http://www.xuetangx.com/courses?org=-1&cid=117&page_type=0&page=2 单链表 //单链表的结点类模板 template <class T> class Node{ private: Node<T&...

weixin_30951389的博客 485

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c语言单链表_[内附完整源码和文档] 基于C语言的校运动会项目管理系统

前言随着计算机技术的普及与提高,越来越多的人使用计算机,计算机以其强大的性能价格优势给人们的工作、学习和生活带来极大的方便.计算机代替人工处理一些事务已成为必然。整个人类社会已进入高度信息化,人们对信息和数据的利用和处理已经进入自动化、网络化和社会化的阶段。如在查找资料、处理日常办公事务、科研生产等方面,无不需要利用大量的信息资源。因此,如何有效地进行数据信息的管理和利用,已经成为人们普遍关注的课...

weixin_39851918的博客 490

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

寒假c++学习计划

课程选择 概览 清华大学 C++语言程序设计基础 深入学习 清华大学 C++语言程序设计进阶 (2015年秋) 理由 清华大学郑莉老师的课浅显易懂,很适合我这种小白,再加上学习过c语言理解c++基础并不是很困难,因此我决定在花较少时间学习了C++基础课程后,去攻克进阶c++的难关~ 计划 先花一周巩固基础,之后至寒假结束共计16天,每天看两个课时,周末总结归纳。在此粘贴课程目录,学习完成之后会...

weixin_33733810的博客 230

链表类实现模板(Node.h和LinkedList.h)

链表类的实现模板(c++语言程序设计)郑莉版习题9-7模板 Node.h //Node.h #ifndef NODE_H #define NODE_H template<class T> class Node { private : Node<T> * next; //指向后继的指针 public : T data;// 数据域 Node(const T& data, Node<T> *next); void insertAft.

falldeep的算法世界 2337
上一篇: c++语言程序设计(第四版)郑莉链表的实现源码
下一篇: 解决linux安装内核无效签名的问题
来时路lemon
博客等级 码龄9年 10粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值