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

在這裏插入圖片描述
在這裏插入圖片描述
代碼有不足的地方,歡迎在下方留言 !

Thank for your reading !!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章