当前位置: 首页 > wzjs >正文

php网站开发第三章小程序制作方法教程

php网站开发第三章,小程序制作方法教程,网站优化的常见问题,wordpress 投稿审核栈的链表基础表示结构 #include<iostream> #include<stdexcept> using namespace std; //模板声明&#xff0c;表明Stack类是一个通用的模板&#xff0c;可以用于存储任何类型的元素T template<typename T> //栈的声明 //Stack类的声明&#xff0c;表示一…

栈的链表基础表示结构

#include<iostream>
#include<stdexcept>

using namespace std;
//模板声明,表明Stack类是一个通用的模板,可以用于存储任何类型的元素T
template<typename T>

//栈的声明
//Stack类的声明,表示一个栈的数据结构
class Stack {
private://定义私有(成员变量)
    struct Node {//结构体定义,用于表示栈中的结点,每个结点包含一个数据成员data和一个指向下一个结点的指针next
        T data;
        Node* next;
        Node(T d):data(d),next(NULL){}
    };
    Node* head;//用于保存栈的头结点指针
    int size;//用于保存栈的大小
    
public://定义公共
    Stack() : head(NULL),size(0){}//构造函数,用于初始化栈,它将头结点指针设置为NULL,并将栈的大小设置为0
    ~Stack();//析构函数,用于释放栈所用的内存
    void push(T element);//公共函数,用于将一个新元素压入栈顶
    T pop();//用于从栈顶弹出一个元素
    T top() const;//用于获取栈顶的元素,但不弹出它
    int getSize() const;//用于获取栈中元素数量
};

//栈的扩容
//有链表实现栈时,每次如果是新生成的结点,则不涉及到像顺序表那样的扩容操作

//栈的销毁
template<typename T>
Stack<T>::~Stack() {//析构函数的声明,用于在对象销毁时,释放动态分配的结点内存
//不断循环访问栈中的元素,每次取出栈顶元素,存储到临时变量temp中,并且弹出栈顶,并利用delete将弹出的元素进行内存释放,知道栈为空为止
    while (head != NULL) {
        Node* temp = head;
        head = head->next;
        delete temp;
    }
}

//入栈
template<typename T>
void Stack<T>::push(T element) {
//创建了一个新的Node对象,并将传入的元素赋值给该对象的数据成员。通过使用new操作符动态分配了内存来存储新的结点
    Node* newNode = new Node(element);
    newNode->next = head;//将新节点的next指针指向当前的头结点。这样,新节点就被添加到了栈的头部
    head = newNode;//将头节点的指针更新为新节点,使新节点成为栈的新头部
    ++size;//栈大小+1
}

//出栈
template<typename T>
T Stack<T>::pop() {
    if (head == NULL) {
        throw std::underflow_error("Stack is empty");//如果栈空,抛出异常
    }
    T result = head->data;//将头结点的数据成员赋值给result变量,准备返回弹出的元素
    Node* temp = head;//将头结点的指针赋值给temp变量,用于后续删除头结点
    head = head->next;//将头结点的next指针赋值给头结点本身,从而将头结点从链表中移除
    delete temp;//调用delete释放temp所指向的结点内存
    --size;//栈大小-1
    return result;//返回弹出的元素
}

//获取栈顶元素
template<typename T>
T Stack<T>::top() const {
    if (head == NULL) {
        throw std::underflow_error("Stack is empty");//如果栈空,抛出异常
    }
    return head->data;//不空,返回head的data域,即栈顶元素。
}

template<typename T>
int Stack<T>::getSize() const{
    return size;
}

int main() {
    Stack<int> st;
    st.push(4);
    st.push(7);
    st.push(13);
    cout << st.top() << endl;
    st.push(17);
    cout << st.top() << endl;
    st.pop();
    st.pop();
    cout << st.top() << endl;
    cout << st.getSize() << endl;

    return 0;
}

http://www.dtcms.com/wzjs/825414.html

相关文章:

  • 南宁网站建设哪个好苏州网络公司哪家最好
  • 廊坊企业网站团队建个企业网站还是开个淘宝店
  • 湖口县建站公司wordpress后台很卡怎么办
  • 什么叫做网站维护扁平化 网站 模板
  • 纯静态企业网站一个月做网站
  • seo品牌优化百度资源网站推广关键词排名滁州网站建设hi444
  • 网站美工效果图怎么做手机版的学习网站
  • 网站推广怎样做织梦免费自适应网站模板
  • 安徽建筑大学城市建设学院网站空间站 参考消息
  • 北京康迪建设监理咨询有限公司网站怎么免费安装wordpress主题
  • 东营做网站优化哪家好互联网营销的特点
  • 专门做折扣的网站网页制作的模板代码
  • 铜仁北京网站建设出售全国精准客户电话号码
  • 贵阳网站seo公司河南工程建设网
  • 做网站运营很累吧青岛做网站优化哪家好
  • 网站后台地址破解医院网站建设方案策划书
  • 济南网站建设公司-远大云.xueui wordpress
  • 网站建设百度推广总结未备案域名
  • 永久免费空间网站网站交换链接怎么做?
  • 东莞做网站排名优化推广400电话网络推广微信网站
  • 网站改域名审核时间做网站推广引流效果好吗
  • 做色流网站要注意什么地方个人兼职网站制作
  • 电商网站建设怎么样做视频网站怎么挣钱吗
  • 网站代优化百度地图的精准定位功能
  • 北京网站建设哪家好天室内设计培训班快速
  • 太平建设公司官方网站陕西建设技术学院网站
  • 河南省城乡建设厅网站专业网站运营
  • 二手车网站开发PPTasp.net做毕业设计网站
  • 手机网站 wap界面设计风格
  • 物流网站免费模板自己做的网站怎么赚钱吗