栈-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
代码有不足的地方,欢迎在下方留言 !
Thank for your reading !!!
公众号:FPGA之旅