栈-C语言及Python实现

简介: 笔记

栈-C语言及Python实现


栈是数据结构中最为基础的一种数据结构,也是学习数据结构时,在前面就会接触到它,比较基础,也比较简单,同样也比较重要。


栈是一种数据结构,先进后出,就如同球桶一样,最先放进去的球,只能最后拿出来,最后放进去的球,可以第一个被拿出来。


对栈的操作一般有:入栈、出栈、获得栈顶元素、判断栈是否为空、清空栈等。


C语言中实现栈可以使用数组以及链表来实现, 但是数组局限性比较大,所以这里使用链表实现。


实现过程可以使用多文件,也可以使用单个文件,这里使用单个文件。

#include<stdio.h>
typedef struct Stack
{
  int data;
  struct Stack* next;
}Stack;
Stack* CreateStack()    //创建栈
{
  Stack* stack = (Stack*)malloc(sizeof(Stack));
  stack->next = NULL;
  return stack;
}
void push_stack(Stack* stack,int data) //入栈
{
  Stack* news = (Stack*)malloc(sizeof(Stack));
  news->data = data;
  news->next = stack->next;
  stack->next = news;
  return;
}
void pop_stack(Stack* stack)    //出栈
{
  Stack* temp;
  if (stack->next != NULL)
  {
    temp = stack->next;
    stack->next = temp->next;
  }
}
int get_top(Stack* stack)    //得到栈顶元素
{
  if (stack->next != NULL)
    return stack->next->data;
  return -1;
}
int empty(Stack* stack)   //判断栈是否为空
{
  if (stack->next != NULL)
    return 0;
  return 1;
}
void to_empty(Stack* stack)   //清空栈
{
  Stack* temp;
  while (stack->next != NULL)
  {
    temp = stack->next;
    stack->next = temp->next;
  }
}

下面是Python实现的栈,代码和C语言的差不多,只是换个写代码的风格,而且由于python列表的特性,代码简单许多。

class stack:
  def __init__(self):
    self.stack = []
    self.right = 0
  def push_stack(self,data):
    self.stack.append(data)
    self.right+=1
    return self.stack
  def pop_stack(self):
    self.stack.pop()
    self.right -=1
    return self.stack
  def get_top(self):
    return self.stack[self.right-1]
  def is_empty(self):
    if self.right == 0:
      return True
    else:
      return False

1.png2.png

代码有不足的地方,欢迎在下方留言 !

Thank for your reading !!!


公众号:FPGA之旅

目录
相关文章
|
18天前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
94 9
|
2月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
61 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
1月前
|
存储 缓存 Java
深度解密 Python 虚拟机的执行环境:栈帧对象
深度解密 Python 虚拟机的执行环境:栈帧对象
61 13
|
1月前
|
C语言
数组栈的实现(C语言描述)
本文介绍了如何在C语言中使用数组来实现栈的数据结构,包括栈的创建、入栈、出栈、获取栈顶元素、检查栈是否为空、获取栈的大小以及销毁栈等操作,并提供了相应的函数实现。
28 1
|
1月前
|
机器学习/深度学习 物联网 数据处理
C语言用于物联网更合适还是python
选择 C 语言还是 Python 作为物联网(IoT)开发的语言取决于多个因素,包括项目的性质、资源限制、性能需求以及开发团队的技能水平。C 语言性能优越,适合资源受限的嵌入式设备,能直接访问硬件,广泛应用于底层开发,但开发复杂且容易出错。Python 则以其简单的语法和丰富的库支持快速开发和原型制作,适合跨平台应用和数据处理,但性能较低,资源占用较大。根据项目需求,性能和资源要求高时选择 C 语言,需快速开发和易于维护时选择 Python。
|
2月前
|
存储 人工智能 C语言
数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值&&特殊矩阵的压缩存储
本文首先介绍了栈的应用之一——括号匹配,利用栈的特性实现左右括号的匹配检测。接着详细描述了南京理工大学的一道编程题,要求判断输入字符串中的括号是否正确匹配,并给出了完整的代码示例。此外,还探讨了栈在表达式求值中的应用,包括中缀、后缀和前缀表达式的转换与计算方法。最后,文章介绍了矩阵的压缩存储技术,涵盖对称矩阵、三角矩阵及稀疏矩阵的不同压缩存储策略,提高存储效率。
391 8
|
2月前
|
存储 C语言
数据结构基础详解(C语言): 栈与队列的详解附完整代码
栈是一种仅允许在一端进行插入和删除操作的线性表,常用于解决括号匹配、函数调用等问题。栈分为顺序栈和链栈,顺序栈使用数组存储,链栈基于单链表实现。栈的主要操作包括初始化、销毁、入栈、出栈等。栈的应用广泛,如表达式求值、递归等场景。栈的顺序存储结构由数组和栈顶指针构成,链栈则基于单链表的头插法实现。
378 3
|
3月前
|
JSON C语言 数据格式
Python导出隐马尔科夫模型参数到JSON文件C语言读取
Python导出隐马尔科夫模型参数到JSON文件C语言读取
26 1
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
28 4
|
3月前
|
Python
【Leetcode刷题Python】946. 验证栈序列
LeetCode题目“946. 验证栈序列”的Python解决方案,通过模拟栈的压入和弹出操作来验证给定的两个序列是否能通过合法的栈操作得到。
29 6