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

数据结构day5

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("栈为空,无需出栈");return;}link_p del=T->ptop;T->ptop=del->next;free(del);T->len--;
}
//遍历
void show_stack(top_p T)
{if(T==NULL){printf("入参为空\n");return;}if(empty(T)){printf("栈为空,不能遍历");return;}link_p p=T->ptop;while(p!=NULL){printf("%d->",p->data);p=p->next;}printf("NULL");putchar(10);
}
//销毁
void free_stack(top_p T)
{
if(T==NULL){printf("入参为空\n");return;}link_p p=T->ptop;while(p!=NULL){p=p->next;free(p);}}

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,1);push_stack(T,2);push_stack(T,3);push_stack(T,4);show_stack(T);return 0;
}

http://www.lryc.cn/news/307212.html

相关文章:

  • 基础!!!吴恩达deeplearning.ai:神经网络中使用softmax
  • mapbox高德地图与相机
  • Eslint在Vscode中使用技巧的相关技巧
  • 045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件
  • 【蓝牙协议栈】【BR/EDR】【AVRCP】蓝牙音视频远程控制协议
  • Head First Design Patterns - 单例模式
  • Mysql的备份还原
  • 分区表介绍
  • emacs 源码分析(七)
  • Linux运维-Web服务器的配置与管理(Apache+tomcat)(没成功,最后有失败经验)
  • 探讨分布式数据库ID生成解决方案
  • Clickhouse填坑记4:Too many parts问题分析
  • CertiK CSO Dr. Kang Li 确认出席Hack .Summit() 香港区块链盛会
  • C++ 游戏飞机大战, 字符型的
  • 用html编写的简易新闻页面
  • docker-mysql:5.7安装
  • SQLPro Studio:数据库管理的革命性工具 mac版
  • 【小沐学QT】QT学习之OpenGL开发笔记
  • kali安装ARL灯塔(docker)
  • 字节面试分享,请详细介绍为何Http Post发送两次请求
  • Flink CDC 3.0 Starrocks建表失败会导致任务卡主!
  • 基于 LVGL 使用 SquareLine Studio 快速设计 UI 界面
  • Selenium IDE插件录制网页,解放双手
  • 【LeetCode】【滑动窗口长度不固定】978 最长湍流子数组
  • 水库安全监测方案(福建地区水库安全监测案例分享)
  • Oracle内存计算应用模式
  • ELK日志系统
  • C++:list容器(非原生指针迭代器的实现)
  • 抖音视频批量下载软件|视频评论采集工具
  • Oracle RMAN 备份恢复