zl程序教程

您现在的位置是:首页 >  Python

当前栏目

栈-C语言及Python实现

2023-03-14 22:44:21 时间

栈-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之旅