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

著名建筑设计网站开发网站需求设计

著名建筑设计网站,开发网站需求设计,工程公司管理制度,北京网站建设方案外包[数据结构习题]栈——中心对称链 #x1f449;知识点导航#x1f48e;#xff1a;【数据结构】栈和队列 #x1f449;[王道数据结构]习题导航#x1f48e;#xff1a; p a g e 70.4 page70.4 page70.4 本节为栈和链表综合练习题 题目描述#xff1a; #x1f387;思路…[数据结构习题]栈——中心对称链 知识点导航【数据结构】栈和队列 [王道数据结构]习题导航 p a g e 70.4 page70.4 page70.4 本节为栈和链表综合练习题 题目描述 思路前段进栈 思路分析 要判断一个带头结点的单链表是否中心对称即链表的前半部分和后半部分互为逆序关系因此由栈的先进后出特性可以实现逆序 step: 因为涉及链表和栈我们需要分别实现相关的操作 1. 单链表实现 ①定义结构体 typedef struct LNode { //定义一个单链表char data;struct LNode* next; }LNode,*LinkList;②初始化 void InitList(LinkList L, int n) {L (LNode*)malloc(sizeof(LNode)); //头结点LNode* p L;char x;for (int i 0; i n; i) {cin x;LNode* s (LNode*)malloc(sizeof(LNode));s-data x;p-next s;p s;}p-next NULL; }2. 顺序栈实现 ①定义结构体 我们选择用顺序栈来实现 其中 d a t a data data 为字符串数组 t o p top top 为栈顶指针 #define Maxsize 50typedef struct SqStack { //定义一个栈char data[Maxsize];int top; }SqStack;②初始化判空 由于 S . t o p S.top S.top 指向的是栈顶元素而当栈空时 S . t o p − 1 S.top-1 S.top−1以此来实现初始化与判空 void InitStack(SqStack S) {S.top -1; //初始化栈顶 }bool Empty(SqStack S) {if (S.top -1)return true;return false; }3. 中心对称链的判断 做完了前期准备之后我们就要判断链是否中心对称了 算法思想使用栈来判断链表中的数据元素是否中心对称首先让单链表的前半段元素放入栈中在处理链表的后半段元素时每访问链表的一个元素就让栈弹出栈顶元素与之进行比较若相等则继续判断后续元素直到链表后半段的元素全部比较完成此时若栈为空则为中心对称链否则不成立 图解算法 ①前段元素进栈 由于已知链表的长度为 n n n因此只需要遍历 ⌊ n 2 ⌋ ⌊\frac{n}{2}⌋ ⌊2n​⌋ 次即遍历完成前半段所有元素 指针 p p p 最初指向首结点每访问到一个链表结点便将其压入栈中S.data[S.top]p-data 代码实现 LNode* p L-next;for (int i 0; i n / 2; i) {S.data[S.top] p-data; //压入栈p p-next;}结束时如果链表长度 n n n 为偶数则指针 p p p 直接指向后半段的首结点若链表长度为奇数则指向中心结点此时需要让pp-next if (n % 2 ! 0) //如果n为奇数p p-next; //让p指向后半段首位置②前段元素出栈 当前状态为 不断比较 S.data[S.top] 和 p-next 直到 p N U L L pNULL pNULL如果此时栈为空且指针 p p p指向 N U L L NULL NULL则说明中心对称 防止中间存在元素不相等而提前退出 代码实现 while (p ! NULL p-data S.data[S.top]) {S.top-1;p p-next;}if (Empty(S) pNULL)return true;elsereturn false;完整代码实现 #includeiostream #define Maxsize 50 using namespace std;typedef struct LNode { //定义一个单链表char data;struct LNode* next; }LNode,*LinkList;void InitList(LinkList L, int n) {L (LNode*)malloc(sizeof(LNode)); //头结点LNode* p L;char x;for (int i 0; i n; i) {cin x;LNode* s (LNode*)malloc(sizeof(LNode));s-data x;p-next s;p s;}p-next NULL; }typedef struct SqStack { //定义一个栈char data[Maxsize];int top; }SqStack;void InitStack(SqStack S) {S.top -1; //初始化栈顶 }bool Empty(SqStack S) {if (S.top -1)return true;return false; }//判断链表是否中心对称 bool res(LinkList L, SqStack S, int n) {LNode* p L-next;for (int i 0; i n / 2; i) {S.data[S.top] p-data; //压入栈p p-next;}if (n % 2 ! 0) //如果n为奇数p p-next; //让p指向后半段首位置while (p ! NULL p-data S.data[S.top]) {S.top-1;p p-next;}if (Empty(S) pNULL)return true;elsereturn false; }int main() {// 1.定义一个单链表LinkList L;int n;cout 请输入链表的长度 endl;cin n;cout 请输入单链表中的字符 endl;InitList(L,n);// 2.定义一个栈SqStack S;InitStack(S);// 3.中心对称字符串cout 单链表是否中心对称(0/1) res(L, S, n) endl;system(pause);return 0; }输出结果 这是一道栈和链表的综合练习题不是很难但有利于知识点的回顾~ 如有错误欢迎指正~
http://www.hkea.cn/news/14581298/

相关文章:

  • 桐乡住房和建设局网站铁盒 东莞网站建设
  • 政务门户网站建设信息凡科快图 免费
  • 58同城 网站建设自己怎么做商城网站吗
  • 定制网站建设广告网站开发建设账务处理程序
  • 安徽省住房城乡建设厅网站中国菲律宾概念股
  • wordpress 做企业网站做网站怎么接业务
  • 如何服务器ip地址做网站商场网站建设
  • 网站开发最后五个阶段WordPress无法写博客头像
  • 北京网站搭建多少钱国外办公室设计欣赏
  • 台州国强建设网站购物网站建设项目策划书
  • 校园微网站建设方案无人在线观看高清视频8
  • 江门建站模板搭建网站整体形象策划与包装
  • 蚌埠北京网站建设找素材的网站
  • 泉港做网站公司个人网站建设维护
  • wordpress 仿站天润网站建设
  • 个体户可以网站备案吗公司网站建设的视频教程
  • 求一个手机能看的网站单页网站seo优化
  • 宁波网站建设排名寿光网站建设
  • 珠海医疗网站建设如果网站没有做icp备案会被处罚
  • 网站恢复正常成都手机网站建设报价表
  • 网站seo方案撰写国家企业信用信息查询全国
  • 怎么找到php网站的首页面htmlppt网站源码
  • 小学学校网站建设方案苏州建网
  • 网站重要组成部分青岛网站建设工作室
  • 网站相互推广怎么做一站式服务就像一个什么
  • 手车做网课网站2022年最新国际新闻
  • 网站提示未备案拼多多推广关键词首选帝搜软件
  • 标准网站建设报价上海网页制作方法
  • 做正规小说网站网站如何更换服务器
  • 免费个人网站源码phpwordpress双语站