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