[数据结构]链栈的创建,入栈和出栈

栈是一种在栈顶压入和弹出的数据结构,所以只在一端进行操作.为了减小遍历开支,所以链栈一般在首元节点处进行插入(入栈).

#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data;struct Node* next;}Node;
Node* pushStack(Node* , int); 
void print_Stack(Node* );
Node* popStack(Node* ptr,int* popvalue);
int main() 
{Node* ptr = NULL; int value = 0,popvalue=0;/*数据进行入栈*/for (int i = 0; i < 10; i++) {value = 10 * i + 10;ptr=pushStack(ptr, value);}print_Stack(ptr);    ptr=popStack(ptr,&popvalue);printf("popvalue=%d\n",popvalue);print_Stack(ptr);return 0;
}
/*执行压栈操作*/
Node* pushStack(Node* ptr, int pushvalue) 
{if (ptr == NULL){Node* newNode = (Node*)malloc(sizeof(Node));ptr = newNode; newNode->next = NULL; newNode->data = pushvalue;}else {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = pushvalue;newNode->next = ptr;ptr = newNode;}return ptr;
}void print_Stack(Node* ptr)
{Node* str=ptr;while (str->next!=NULL) {printf("%d\n", str->data);str = str->next;}printf("%d\n", str->data);
}
/*执行出栈操作*/
Node* popStack(Node* ptr,int* popvalue)
{    Node* delete_ptr=NULL;*popvalue=ptr->data;delete_ptr=ptr;ptr=ptr->next;free(delete_ptr);delete_ptr=NULL;    return ptr;
}

 出栈返回栈顶数据代码:

#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data;struct Node* next;
}Node;
Node* pushStack(Node* , int); void print_Stack(Node* );
int popStack(Node** ptr,int popvalue);int main() 
{Node* ptr = NULL; int value = 0,popvalue=0;/*数据进行入栈*/for (int i = 0; i < 10; i++) {value = 10 * i + 10;ptr=pushStack(ptr, value);}print_Stack(ptr);    popvalue=popStack(&ptr,popvalue);printf("popvalue=%d\n",popvalue);print_Stack(ptr);return 0;
}/*执行压栈操作*/
Node* pushStack(Node* ptr, int pushvalue) 
{if (ptr == NULL){Node* newNode = (Node*)malloc(sizeof(Node));ptr = newNode; newNode->next = NULL;newNode->data = pushvalue;}else {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = pushvalue;newNode->next = ptr;ptr = newNode;}
return ptr;
}void print_Stack(Node* ptr)
{Node* str=ptr;while (str->next!=NULL) {printf("%d\n", str->data);str = str->next;}printf("%d\n", str->data);
}/*进行出栈操作*/
int popStack(Node** ptr,int popvalue)
{   Node* delete_ptr=NULL;popvalue=(*ptr)->data;delete_ptr=*ptr;*ptr=((*ptr)->next);free(delete_ptr);delete_ptr=NULL;    return popvalue;
}

修改为具有头指针的形式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qiankun 公共依赖

1、提取公共依赖的目的 减少相同资源的重复加载资源版本不同步打包文件庞大2、如何提取公共依赖 基本思路&#xff1a;1、相同依赖 采用 CDN 的方式加载&#xff0c;并把 所有依赖的 CDN 链接 统一放到一个文件中进行管理 2、把存放 CDN 链接的文件&#xff0c;引入到 vue.conf…

创意与技术的结晶:AI魔法绘图与中文描述的完美结合

在人类文明的长河中&#xff0c;创意与技术一直是推动发展的重要动力。随着科技的日新月异&#xff0c;人工智能&#xff08;AI&#xff09;在创意领域的应用逐渐崭露头角&#xff0c;而AI魔法绘图与中文描述的结合&#xff0c;更是将这一趋势推向了新的高度。AI魔法绘图是一种…

NNote插件:让网络阅读变得更高效,轻松同步至Notion笔记

NNote笔记 在这个互联网时代&#xff0c;我们每天都在浏览器中阅读大量的文章和资讯&#xff0c;时常会遇到让人眼前一亮的观点和想法。然而&#xff0c;当我们试图将这些精彩内容记录下来时&#xff0c;却常常感受到复制粘贴的繁琐。为了解决这个问题&#xff0c;NNote插件应运…

HarmonyOS 应用开发学习笔记 ets自定义组件及其引用 @Component自定义组件

Component注解的作用是用来构建自定义组件 Component组件官方文档 自定义组件具有以下特点&#xff1a; 可组合&#xff1a;允许开发者组合使用系统组件、及其属性和方法。 可重用&#xff1a;自定义组件可以被其他组件重用&#xff0c;并作为不同的实例在不同的父组件或容器…

【深度学习每日小知识】数据增强

数据增强是通过对原始数据进行各种转换和修改来人工生成附加数据的过程&#xff0c;旨在增加机器学习模型中训练数据的大小和多样性。这对于计算机视觉领域尤为重要&#xff0c;因为图像经常被用作输入数据。 计算机视觉中的数据增强 数据增强的主要目标是解决过拟合问题&…

Java 开发环境搭建

什么是 JDK 和 JRE&#xff1f; JDK &#xff08;Java Development Kit&#xff09;&#xff1a;是 Java 程序开发工具包&#xff0c;包含 JRE 和开发人员使用的工具JRE&#xff08;Java Runtime Environment&#xff09;&#xff1a;是 Java 程序的运行时环境&#xff0c;包含…

Javaweb之Mybatis的基础操作之新增和更新操作的详细解析

1.4 新增 功能&#xff1a;新增员工信息 1.4.1 基本新增 员工表结构&#xff1a; SQL语句&#xff1a; insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) values (songyuanqiao,宋远桥,1,1.jpg,2,2012-10-09,2,2022-10-…

HR_net逐步实现过程

1.numpy实现数组卷积操作 这里是一个矩阵&#xff0c;换个图试一下 import numpy as np #输入数组 input_imagenp.array([[1,2,3],[4,5,6],[7,8,9]]) #卷积核 kernelnp.array([[1,0],[0,1]]) #卷积操作 output_imagenp.zeros((2,2)) for i in range(2):for j in range(2):out…

Spark内核解析-内存管理7(六)

1、Spark内存管理 Spark 作为一个基于内存的分布式计算引擎&#xff0c;其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理&#xff0c;有助于更好地开发 Spark 应用程序和进行性能调优。本文中阐述的原理基于 Spark 2.1 版本。 在执行 Spark 的…

git 本地仓库

本地仓库 start.bat 启动

win7系统报错msvcp140.dll丢失的多种解决方法分享

在Windows 7操作系统中&#xff0c;msvcp140.dll是一个非常重要的动态链接库文件&#xff0c;它负责许多应用程序的正常运行。然而&#xff0c;由于各种原因&#xff0c;我们可能会遇到丢失msvcp140.dll的问题。当msvcp140.dll文件丢失或损坏时&#xff0c;可能会导致程序无法启…

OCS2 入门教程(三)- 最优控制模块

系列文章目录 前言 在本页中&#xff0c;我们将为您提供如何定义 MPC 问题的一些提示。在 OCS2 中&#xff0c;OptimalControlProblem 结构定义了优化问题的主要组成部分&#xff0c;即动力学、成本和约束条件。 除此之外&#xff0c;您可能还希望为 MPC 提供一些参考轨迹、预定…

Apache Commons Email在邮件发送中的应用

第1章&#xff1a;简介 大家好&#xff0c;我是小黑&#xff0c;今天咱们聊聊Apache Commons Email这个库&#xff0c;它在发送邮件方面可谓是小而美的利器。Apache Commons Email基于JavaMail API&#xff0c;但它提供了更简洁、更易用的接口&#xff0c;让咱们在处理电子邮件…

MySQL-DCL

DCL是数据控制语言&#xff0c;用来管理数据库用户&#xff0c;控制数据库的访问权限。 管理用户&#xff1a;管理哪些用户可以访问哪些数据库 1.查询用户 USE mysql; SELECT * FROM user; 注意&#xff1a; MySQL中用户信息和用户的权限信息都是记录在mysql数据库的user表中的…

Python重温笔记番外篇

1. 写在前面 今天这篇文章是python重温笔记的番外&#xff0c;整理一些面试中的问题以及遇到过的一些坑&#xff0c; 正好借着这个机会把前面的知识进行一个串联&#xff0c; 要不然这些知识很容易就会遗忘&#xff0c; 毕竟知识多而又不太容易常用到。 涉及到的知识包括列表推…

ARCGIS PRO SDK 使用条件管理 Pro UI

ARCGIS PRO UI简单介绍以下&#xff1a; 第一步&#xff1a;在Config.daml中在</AddInfo>标签下加上条件<conditions>标签&#xff08;必须添加的&#xff09; <conditions><!-- 定义条件 &#xff0c;此处定义了两个--Tab 另一个为 group><insert…

Ubuntu 硬盘挂载问题

Ubuntu 重启硬盘问题 重启Ubuntu服务器进入紧急模式。出现报错 /nvme0n1 can not open blockdev查看/etc/fstab 发现写入的挂载设备名与当前系统设备名不符合&#xff1b;一开始以为是写fstab的时候写错设备号了&#xff0c;后来发现每次重启某些硬盘设备号会改变。 使用UUI…

【AI视野·今日Robot 机器人论文速览 第六十六期】Tue, 31 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 31 Oct 2023 Totally 39 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers DEFT: Dexterous Fine-Tuning for Real-World Hand Policies Authors Aditya Kannan, Kenneth Shaw, Shikhar Bahl, Pragna Ma…

Qt实现模拟操作系统系统

附演示视屏如下&#xff1a; 操作系统演示 使用Qt与C开发的模拟操作系统小程序&#xff0c;主要实现功能&#xff1a; 1.可以创建多个进程&#xff0c;并进行进程的创建、删除、执行等方式&#xff0c;同时可对读内存、写内存、输入、输出进行指令控制&#xff1b; 2.进程有…

算法第十一天-递增顺序搜索树

递增顺序搜索树 题目要求 解题思路 1.二叉搜索树&#xff08;BST&#xff09; 2.任意两个不同节点 遇到二叉搜索树&#xff0c;立即想到这句话&#xff1a;[二叉搜索树&#xff08;BST&#xff09;的中序遍历是有序的]。这是解决所有二叉搜索树问题的关键。 要求BST的任意两…