iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中栈的两种实现方法详解
  • 652
分享到

C语言中栈的两种实现方法详解

2024-04-02 19:04:59 652人浏览 安东尼
摘要

目录一、顺序栈二、链式栈总结一、顺序栈 #include<stdio.h> #include<stdlib.h> #define maxsize 64

一、顺序栈


#include<stdio.h>
#include<stdlib.h>
#define maxsize 64

//定义栈
typedef struct
{
	int data[maxsize];
	int top;
}sqstack,*sqslink;
//设置栈空
void Clearstack(sqslink s)
{
	s->top=-1;
}

//判断栈空
int Emptystack(sqslink s)
{
	if (s->top<0)
		return 1;
	else
		return 0;
}
//进栈
int Push(sqslink s, int x)
{
	if (s->top>=maxsize-1)
		return 0;
	else
	{
		s->top++;
		s->data[s->top]=x;
		return 1;
	}
}
// 出栈
int Popstack(sqslink s)
{
	int n;
	if (Emptystack(s)>0)
		return NULL;
	else
	{
		n=s->data[s->top];
		s->top--;
		return n;
	}
}
void main()
{
	sqslink s1;
	s1 =(sqslink)malloc(sizeof(sqstack));
	Clearstack(s1);
	printf("%d\n",s1->top);
	for(int i=0; i<=10;i++)
	{
		Push(s1, i);
		printf("%d is pushed into stack\n",i);
	}
	printf("top is point to %d\n",s1->top);
	printf("\n");
	int n;
	n = Popstack(s1);
	printf("number %d  is poped\n",n);
	printf("top is point to %d\n",s1->top);
}

二、链式栈


#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
	int data;
	struct node * next;
}snode,*slink;
struct Node
{
	slink i;
	slink n;
};

// 清空栈
void Clearstack(slink top)
{
	top=NULL;
}
//判断栈是否为空
int Emptystack(slink top)
{
	if (top==NULL) return 1;
	else return 0;
}

// 进栈
slink Push(slink top, int x)
{
	slink node = NULL;
	node = (slink)malloc(sizeof(snode));
	node->data = x;
	node->next = top;
	top = node;
	printf("*************************\n");
	printf("%d",top->data);
	printf("*************************\n");
	return top;
}
// 出栈
struct Node Pop(slink top)
{	
	slink node = NULL;
	struct Node result;
	if (Emptystack(top))
	{
	result.i=node;
	}
	else
	{
		int n;
		node = top;
		top = node->next;
		result.i = top;
		result.n = node;
		return result;
	}	
}

void main()
{
	slink top_ = NULL;
	for(int i =0; i<10;i++)
	{
		top_ = Push(top_, i);
		printf("%d is pushed in to the stack\n",i);
	}	
	int e;
	e = top_->data;
	printf("top is pointint to %d\n",e);
	printf("\n");
	printf("\n");
	printf("\n");
	slink node =NULL;
	printf("*************************\n");
	struct Node result = Pop(top_);
	if ((result.i)!=NULL)
	{
		top_ = result.i;
		node = result.n;

		e = top_->data;
		printf("top is pointint to %d\n",e);
		int e_node;
		e_node = node->data;
		printf("the node Poped 's data is pointint to %d\n",e_node);
		free(node);
	}
	else
	{
	printf("stack is empty");
	}
}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C语言中栈的两种实现方法详解

本文链接: https://www.lsjlt.com/news/133187.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中栈的两种实现方法详解
    目录一、顺序栈二、链式栈总结一、顺序栈 #include<stdio.h> #include<stdlib.h> #define maxsize 64 ...
    99+
    2022-11-12
  • C语言中栈的两种实现方法
    栈的两种实现方式 通常情况下,栈的实现方式有两种,一种方法是使用指针,而另一种方法则是使用数组。但是在调用程序时,我们没有必要知道具体使用了哪种方法。 一、顺序栈 #inclu...
    99+
    2022-11-12
  • C语言实现计算器的两种方法
    本文实例为大家分享了C语言实现计算器的具体代码,供大家参考,具体内容如下 C语言计算器两种方法 //一般做法 #include<stdio.h> #include<...
    99+
    2022-11-13
  • C语言实现栈的示例详解
    目录前言一. 什么是栈二. 使用什么来实现栈三. 栈的实现3.1 头文件3.2 函数实现3.3 完整代码四. 栈的用处前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链...
    99+
    2022-11-13
  • C语言杨辉三角两种实现方法
    目录杨辉三角——C语言实现方法一:利用二维数组实现方法二(对方法一的改进): 总结杨辉三角——C语言实现 杨辉三角: 在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1...
    99+
    2022-11-12
  • C语言字符串左旋的两种实现方法
    目录题目内容:方法一:方法2:三步翻转法补充:C语言--左旋字符串中的k个字符总结题目内容: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA。 ...
    99+
    2023-02-06
    c语言字符串左移 左旋转字符串 c语言字符串左旋
  • C语言实现猜数字游戏的两种方法
    目录前言一、游戏描述二、代码实现1.生成游戏菜单2.构建主函数 3.构建游戏函数 三、二分法实现猜数前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有...
    99+
    2022-11-12
  • C语言 栈与数组的实现详解
    目录栈的实现栈的定义数组实现静态栈动态栈链栈栈的实现 首先我们思考一个问题,什么是栈? 栈是数据结构的一种,栈在我们日常编码中遇到的非常多,很多人对栈的接触可能仅仅局限在 递归使用的...
    99+
    2022-11-13
  • C语言中字符串的两种定义方式详解
    目录方式1方式2总结我们知道C语言中是没有字符串这种数据类型的,我们只能依靠数组进行存储,即字符数组,而我们定义并且初始化数组有两种方式。下面将给大家介绍这两种方式并且介绍这两种方式...
    99+
    2022-11-12
  • C语言详解如何实现顺序栈
    目录顺序栈的定义顺序栈的理解准备工作具体实现今天说的是关于数据结构顺序栈的一些基本操作c语言实现。 顺序栈的定义 首先,我们先来简单了解一下顺序栈,前面线性表我们知道,根据顺序存储或...
    99+
    2022-11-13
  • C语言实现倒置字符串的两种方法分享
    目录前言一、题目二、思路讲解 三、代码实现四、代码总结五、第二种方法倒置字符串六、总结 前言 今天在牛客网上刷了一道题,我感觉挺有意义的,现在我就分享给大家,并且...
    99+
    2022-11-13
    C语言 倒置字符串方法 C语言倒置字符串 C语言 字符串
  • C语言栈与队列相互实现详解
    目录一、本章重点二、队列实现栈三、栈实现队列四、解题思路总结一、本章重点 用两个队列实现栈用两个栈实现队列解题思路总结 二、队列实现栈  我们有两个队列:  ...
    99+
    2022-11-13
  • 详解C语言快速排序三种方法的单趟实现
    目录交换排序的思想冒泡排序的思想快速排序的整体框架快速排序单趟实现逻辑1. hoare版本单趟实现(左右指针法)2.挖坑法单趟排序实现3.前后指针法交换排序的思想 基本思想:所谓交换...
    99+
    2022-11-13
  • C语言实现短字符串压缩的三种方法详解
    目录前言一、通用算法的短字符压缩二、短字符串压缩(1)Smaz(2)Shoco(3)Unisox2三、总结前言 上一篇探索了LZ4的压缩和解压性能,以及对LZ4和ZSTD的压缩、解压...
    99+
    2022-11-13
    C语言短字符串压缩 C语言 字符串压缩
  • C语言超详细讲解栈的实现及代码
    目录前言栈的概念栈的结构栈的实现创建栈结构初始化栈销毁栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空总代码Stack.h 文件Stack.c 文件Test.c 文件前言 栈...
    99+
    2022-11-13
  • R语言常用两种并行方法之parallel详解
    目录并行计算在模拟时什么地方可以用到并行?怎么在R中看我们可以使用并行?parallel(简单)由于最近在进行一些论文的模拟,所以尝试了两种并行的方法:parallel与snowfa...
    99+
    2022-11-12
  • R语言常用两种并行方法之snowfall详解
    上一篇博客(R中两种常用并行方法之parallel)中已经介绍了R中常见的一种并行包:parallel,其有着简单便捷等优势,其实缺点也是非常明显,就是很不稳定。很多时候我们将大量的...
    99+
    2022-11-12
  • C语言魔方阵的三种实现方法
    目录魔方阵:1.奇数阶魔方阵 2.偶数阶魔方阵 (n=4K)3.偶数阶魔方阵 (n=4K+2)魔方阵: 把1到n*n排成n行n列方阵,使方阵中的每一行、每一列以及对角线上的数之和都相...
    99+
    2022-11-12
  • C语言实现手写JSON解析的方法详解
    目录什么是JSONJSON支持的数据类型JSON语法规则JSON的解析JSON基本语法编写解析器头文件实现文件什么是JSON JSON(JavaScript Object Notat...
    99+
    2022-11-13
  • C语言用栈模拟实现队列问题详解
    目录题目描述题目链接思路分析代码实现题目描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)。 你只能使用标准的栈操作...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作