栈-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 !!!