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

学校网站建设报价表想开个网站卖衣服的怎么做

学校网站建设报价表,想开个网站卖衣服的怎么做,自己做的网站图片加载过慢,做dm页网站详解C语言实现链栈~😎前言🙌整体实现内容分析💞1.头文件编码实现🙌2.功能文件编码实现🙌3.测试函数功能代码🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右…

详解C语言实现链栈~😎

  • 前言🙌
  • 整体实现内容分析💞
    • 1.头文件编码实现🙌
    • 2.功能文件编码实现🙌
    • 3.测试函数功能代码🙌
  • 总结撒花💞

追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,手把手带领大家详解C语言实现链栈~ 要是为了运用所学的链表的相关知识和算法。用代码来实现链栈,也就是用链表来实现栈。都是精华内容,可不要错过哟!!!😍😍😍

整体实现内容分析💞

在使用链表来实现链栈时,可以针对栈只在栈顶上后进先出的特点,找什么样的链表实现比较好。我通过比较后觉得采用单链表的结构,然后链表的首节点放在栈顶上。后面只需对首节点进行插入和删除即可。首先建立链表结构体,然后建立队列结构体,里面定义一个指向链表首节点的指head。然后依次实现栈的初始化,销毁,入栈,出栈,取栈顶元素,判断栈是否为空,栈上的元素个数,遍历栈上元素等这些基本功能

1.头文件编码实现🙌

头文件的编写的整体思路分析:

这里是有关头文件的编写和各种功能函数的声明,首先用typedef关键字给存储数据类型取别名,这样做的好处是以后想要改变栈的数据类型只需修改typedef int StDatetype;里的int即可。定义两个结构体,一个是链表的,一个是栈的。

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef int StDatetype;
typedef struct StackNode
{struct StackNode* next;StDatetype data;}ST;
typedef struct Stack
{ST* head;}Stack;//初始化void StackInit(ST* ps);
//销毁
void StackDestory(ST* ps);
//入栈
void StackPush(ST* ps, StDatetype x);
//出栈
void StackPop(ST* ps);
//栈上的数据个数
int  StackSize(ST* ps);
//栈顶元素
StDatetype StackTop(ST* ps);
//判空
bool StackEmpty(ST* ps);

2.功能文件编码实现🙌

功能文件的编写的整体思路分析:

这里是功能文件的编写,在涉及到指针的地方,我都用了assert确保指针有效性,在free掉指针时,需要把指针置为空指针,避免野指针的问题。第一个是初始化函数,第二个是销毁函数实现。其中需要注意的是入栈和出栈的编写。入栈时,先用malloc函数动态申请一个空间,然后判断以下有没有开辟成功。需要注意的是,需要把newnode置为NULL,防止野指针的问题出现。然后将newnode的next指针指向head,然后让head指向newnode,这样就把元素入栈了。还有一种特殊情况是本来就是空的栈,则新生成的newnode就是head。出栈函数实现,需要定义一个next指针指向head下一个,确保把栈顶元素删除后,还能找到后面的元素。Free掉记得把指针置为NULL。其他函数没什么难点,注意以上几个点即可实现以下函数。

#include"Stack.h"
//初始化
void StackInit(Stack* ps)
{assert(ps);ps->head = NULL;}
//销毁
void StackDestory(Stack* ps)
{assert(ps);ST* cur = ps->head;while (cur){ST* next = cur->next;free(cur);cur = next;}ps->head = NULL;}
//入栈
void StackPush(Stack* ps, StDatetype x)
{assert(ps);ST* newnode = (ST*)malloc(sizeof(ST));if (newnode ==NULL){printf("malloc fail\n");exit(-1);}newnode->data = x;newnode->next = NULL;if (ps->head == NULL){ps->head = newnode;}else{newnode->next = ps->head;ps->head = newnode;}}
//出栈
void StackPop(Stack* ps)
{assert(ps);assert(!StackEmpty(ps));if (ps->head->next == NULL){free(ps->head);ps->head = NULL;}else{ST* next = ps->head->next;free(ps->head);ps->head = next;}
}
//栈上的数据个数int  StackSize(Stack * ps){assert(ps);int size = 0;ST* cur = ps->head;while (cur){size++;cur = cur->next;}return size;}//栈顶元素StDatetype StackTop(Stack* ps){assert(ps);assert(!StackEmpty(ps));return ps->head->data;}bool StackEmpty(Stack* ps)
{assert(ps);return ps->head == NULL;
}

3.测试函数功能代码🙌

#include"Stack.h"void Test1()
{Stack s;StackInit(&s);StackPush(&s, 1);StackPush(&s, 2);StackPush(&s, 3);StackPush(&s, 4);printf("栈上的元素个数:%d\n", StackSize(&s));printf("栈顶元素:%d\n", StackTop(&s));if (StackEmpty(&s)){printf("栈空\n");}else{printf("栈不为空\n");}printf("入栈输入顺序为1234,出栈顺序输出:\n");while (!StackEmpty(&s)){printf("%d", StackTop(&s));StackPop(&s);}printf("\n");if (StackEmpty(&s)){printf("栈空\n");}else{printf("栈不为空\n");}StackDestory(&s);printf("\n");
}int main()
{Test1();return 0;
}

功能测试结果展示图:
在这里插入图片描述

总结撒花💞

   本篇文章旨在分享详解C语言实现链栈。希望大家通过阅读此文有所收获本次关于栈的实现相对于之前链表的实现简单一点,指针的指向没有那么复杂,主要是对入栈和出栈的功能实现。但也有很多地方需要注意的。比如说,野指针的问题,动态开辟的空间一定要free掉,并且把指针置为NULL。用动态实现,相对于静态实现还比较灵活,也能对空间有很大的节省。
   😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

http://www.sczhlp.com/news/60294/

相关文章:

  • 成都网站开发建福建省网站建设公司
  • 方圆网通网站建设公司工作室logo设计免费生成
  • 网站内容标签设计网站 内容
  • 网站教育培训机构十大排名深圳交易服务中心官网
  • 苏州网站设计网站搭建网站建设 服务器主机配置
  • 郴州网站推广不收费推广网站有哪些
  • 网站视频下载方法php文件怎么打开
  • 镇江专业建网站繁体企业网站源码
  • 网页休闲小游戏单页关键词优化费用
  • 做的好微信商城网站吗学生个人网页
  • 网站栏目策划方案制作网页的模板的网站
  • 网站开发常用框架网站文件app
  • 广安商城网站建设做电影下载网站赚钱
  • 不同风格的网页夫唯seo教程
  • 营销型网站要素做网站原型现成的框架
  • 百度网站数据统计怎么做企业建设网
  • 南京移动网站设计公司两个网站可以做友情链接吗
  • 875网站建设怎么样公司介绍信模板
  • 上海市各区建设局网站asp网站用ftp怎么替换图片
  • 2016做砸了的小网站国外有什么网站做游戏吗
  • 做网站策划薪酬南宁网站建设兼职
  • 浙江网站建设公司wordpress 更新媒体库
  • 湘潭网站建设价格怎么搭建自己的网站卖货
  • 找别人做的网站怎样修改在百度上怎么卖自己的产品
  • 国外网站推广宣传如何做网站投放广告
  • 网站首页优化公司医院网站改版建设招标公告
  • 做企业云网站的企业邮箱南京网站制作设计公司
  • 网站商城建设哪家好网站seo 规范
  • 如何利用网站模板中国对外贸易网
  • 深圳做网站开发费用龙海市城乡规划建设局网站