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

模板商城建站网站有限公司免费

模板商城建站,网站有限公司免费,有FTP免费网站,多城市二手车网站源码‌1. 线性栈&#xff08;顺序栈&#xff09;‌ ‌结构定义‌&#xff1a; #include <iostream> using namespace std;#define MAX_SIZE 100 // 预定义最大容量// 线性栈结构体 typedef struct {int* data; // 存储数据的数组int top; // 栈顶指针&…

1. 线性栈(顺序栈)

结构定义‌:
#include <iostream>
using namespace std;#define MAX_SIZE 100  // 预定义最大容量// 线性栈结构体
typedef struct {int* data;        // 存储数据的数组int top;          // 栈顶指针(初始化为-1)int capacity;     // 当前栈的最大容量
} SeqStack;// 初始化栈
void InitSeqStack(SeqStack& S) {S.data = new int[MAX_SIZE];S.top = -1;S.capacity = MAX_SIZE;
}// 销毁栈(释放内存)
void DestroySeqStack(SeqStack& S) {delete[] S.data;S.top = -1;S.capacity = 0;
}

常见操作‌:
// 入栈
bool PushSeqStack(SeqStack& S, int x) {if (S.top == S.capacity - 1) {// 栈满时自动扩容(示例中扩容为原大小的2倍)int newCapacity = S.capacity * 2;int* newData = new int[newCapacity];for (int i = 0; i <= S.top; i++) {newData[i] = S.data[i];}delete[] S.data;S.data = newData;S.capacity = newCapacity;}S.data[++S.top] = x;  // 栈顶指针先增1,再赋值return true;
}// 出栈
bool PopSeqStack(SeqStack& S, int& x) {if (S.top == -1) {cout << "栈空,无法出栈!" << endl;return false;}x = S.data[S.top--];  // 先取栈顶元素,再减1return true;
}// 取栈顶元素
bool GetTopSeqStack(SeqStack& S, int& x) {if (S.top == -1) return false;x = S.data[S.top];return true;
}// 判空
bool IsEmptySeqStack(SeqStack& S) {return S.top == -1;
}

2. 链栈

结构定义‌:
#include <iostream>
using namespace std;// 链栈节点结构体
typedef struct LinkNode {int data;struct LinkNode* next;
} LinkNode;// 链栈结构体(通过头指针管理)
typedef struct {LinkNode* top;   // 栈顶指针
} LinkStack;// 初始化栈
void InitLinkStack(LinkStack& S) {S.top = NULL;    // 初始化为空栈
}// 销毁栈(释放所有节点)
void DestroyLinkStack(LinkStack& S) {LinkNode* p = S.top;while (p) {LinkNode* tmp = p;p = p->next;delete tmp;}S.top = NULL;
}
常见操作‌:
// 入栈
bool PushLinkStack(LinkStack& S, int x) {LinkNode* newNode = new LinkNode;if (!newNode) {cout << "内存分配失败!" << endl;return false;}newNode->data = x;newNode->next = S.top;  // 新节点指向原栈顶S.top = newNode;        // 更新栈顶指针return true;
}// 出栈
bool PopLinkStack(LinkStack& S, int& x) {if (!S.top) {cout << "栈空,无法出栈!" << endl;return false;}LinkNode* tmp = S.top;    // 保存栈顶节点x = tmp->data;           // 取栈顶数据S.top = S.top->next;     // 更新栈顶指针delete tmp;              // 释放旧栈顶节点return true;
}// 取栈顶元素
bool GetTopLinkStack(LinkStack& S, int& x) {if (!S.top) return false;x = S.top->data;return true;
}// 判空
bool IsEmptyLinkStack(LinkStack& S) {return S.top == NULL;
}

3. 对比总结

特性线性栈(顺序栈)链栈
存储结构数组(连续内存)链表(离散内存)
内存分配静态预分配(可动态扩容)动态分配节点(按需增减)
入栈操作data[++top] = x(可能需扩容)创建新节点并调整指针
出栈操作top--(无需释放内存)释放节点内存
空间复杂度O(n)O(n)(预分配空间)O(n)O(n)(每个节点含指针域)
内存管理整体一次性分配/释放逐个节点分配/释放
适用场景数据量固定或可预估数据量动态变化,内存需求不确定

通过代码对比可以清晰看出:

  • 线性栈‌适合‌确定容量‌或需要‌快速随机访问‌的场景(如函数调用栈)。
  • 链栈‌适合‌动态数据量‌或需要‌灵活内存管理‌的场景(如递归算法)。
http://www.dtcms.com/wzjs/808003.html

相关文章:

  • 网站改版建设公司桂林网站制作培训班
  • 石家庄住房建设局网站wordpress 上传附件
  • 广州网站建设技术外包网站建设网站建设的
  • tor网站建设自己制作一个网站的软件
  • 网站站内推广计划书手机版房屋3d效果图设计软件
  • 简历模板网站免费建站开发软件
  • wordpress设置2个网站湖北seo优化诊断
  • 网页制作网站wordpress插件赚钱
  • wix做的网站在国内访问不了免费文档模板网站
  • 网站建设观点知识普及网页背景做的比较好的网站
  • 杭州移动网站建设网站建设淘宝
  • 微商网站怎么做旅游网站网页设计报告
  • nodejs网站毕设代做wordpress悬浮窗安装
  • 上海企业网站建设价格郑州工商注册
  • 做网站后有人抢注关键词长沙商城网站
  • 建设有限公司网站建设教育协会培训网站
  • 外贸自建站平台价格品牌传播方案
  • 网站机房建设解决方案做两个单页面网站大概多少钱
  • 手机便宜网站建设菠菜网站怎样做安全
  • 马家堡网站建设wordpress js 钩子
  • 青岛专业餐饮网站制作郑州网站制作的公司
  • 分析网站外链分析工具网络营销服务外包
  • 做学院网站用到的动图网站即将 模板
  • 厦门微信网站开发做动物网站的素材
  • 交互式网站门户网站代码
  • 网站建设可以先备案嘛校园网站建设教程视频
  • 南阳做网站价格门户网站建设工作情况总结
  • 开发网站需要什么语言安徽网站线上开发公司
  • 网站和二级目录权重做网站和做系统的区别
  • php网站开发遇到的问题自助建站广告发布