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

2.26作业

1.整理链栈的代码

//link_stack.c#include"link_stack.h"
//申请栈顶指针
top_p create_top()
{top_p top=(top_p)malloc(sizeof(top_t));if(top==NULL){printf("空间申请失败\n");return NULL;}top->len = 0;top->ptop = NULL;  //刚申请栈指针时没有指向元素return top;
}//申请结点的函数
link_p create_node(int data)
{link_p new=(link_p)malloc(sizeof(link_stack));if(new==NULL){printf("申请空间失败\n");return NULL;}new->data=data;return new;
}//入栈/压栈
void push_stack(top_p T,int data)
{if(T==NULL){printf("入参为空\n");return;}link_p new = create_node(data);//入栈new->next = T->ptop;T->ptop = new;T->len++;
}//判空
int empty(top_p T)
{if(T==NULL){printf("入参为空\n");return -1;}return T->ptop==NULL?1:0;
}//出栈/弹栈
void pop_stack(top_p T)
{if(T==NULL){printf("入参为空\n");return;}if(empty(T)){printf("链栈为空\n");return;}link_p del=T->ptop;T->ptop=T->ptop->next;printf("出栈元素为:%d\n",del->data);free(del);T->len--;
}//遍历
void show_stack(top_p T)
{if(T==NULL){printf("入参为空\n");return;}if(empty(T)){printf("链栈为空\n");return;}link_p p=T->ptop;while(p!=NULL){printf("%d->",p->data);p=p->next;}printf("NULL\n");
}//销毁
void free_stack(top_p T)
{if(T==NULL){printf("入参为空\n");return;}if(empty(T)){printf("链栈为空\n");return;}link_p p=T->ptop;while(p!=NULL){pop_stack(T);p=p->next;}T->ptop=NULL;
}
//link_stack.h#ifndef __LINK_STACK_H__
#define __LINK_STACK_H__
#include <stdio.h>
#include <stdlib.h>
typedef struct link_stack
{int data;struct link_stack *next;
}link_stack,*link_p;//栈顶指针的类型
//栈顶指针应该独立于栈存在,为了和栈中元素不同
typedef struct top_t
{int len;link_p ptop;
}top_t,*top_p;//申请栈顶指针
top_p create_top();
//申请结点的函数
link_p create_node(int data);
//入栈/压栈
void push_stack(top_p T,int data);
//判空
int empty(top_p T);
//出栈/弹栈
void pop_stack(top_p T);
//遍历
void show_stack(top_p T);
//销毁
void free_stack(top_p T);#endif
//main.c#include"link_stack.h"
int main()
{top_p T=create_top();push_stack(T,55);push_stack(T,77);push_stack(T,90);push_stack(T,6);pop_stack(T);show_stack(T);free_stack(T);show_stack(T);return 0;
}

相关文章:

  • Kafka3.x进阶
  • 百亿大佬南存辉瞄准光伏板块,正泰电器分拆正泰安能上市
  • Android的LiveData
  • 机器学习理论知识学习
  • 化学分子Mol2文件格式与使用注意事项
  • vue-element-admin如何绕开系统的请求的路由,使用静态路由
  • 【GameFramework框架内置模块】4、内置模块之调试器(Debugger)
  • https://htmlunit.sourceforge.io/
  • SpringBoot快速入门(黑马学习笔记)
  • Vue.js+SpringBoot开发超市商品管理系统
  • 基于Springboot + Vue 母婴商城系统
  • SQL库操作
  • Mac使用K6工具压测WebSocket
  • uniapp中在app中清除缓存功能
  • 分布式任务调度的几种实现(Redis实现分布式锁 MySQL实现任务调度 负载均衡)
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • js面向对象
  • JS数组方法汇总
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Sass Day-01
  • spark本地环境的搭建到运行第一个spark程序
  • vue 个人积累(使用工具,组件)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 记一次和乔布斯合作最难忘的经历
  • 七牛云假注销小指南
  • 深度学习在携程攻略社区的应用
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 通过npm或yarn自动生成vue组件
  • 携程小程序初体验
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 数据库巡检项
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • #HarmonyOS:Web组件的使用
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (16)Reactor的测试——响应式Spring的道法术器
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十)c52学习之旅-定时器实验
  • (转)VC++中ondraw在什么时候调用的
  • (转)母版页和相对路径
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net IOC框架入门之一 Unity
  • .Net Web项目创建比较不错的参考文章
  • .net 提取注释生成API文档 帮助文档
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • // an array of int
  • @ModelAttribute使用详解
  • @Responsebody与@RequestBody
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [<事务专题>]