幾個概念:
計算機中的儲存資料結構主要分為連續儲存結構和不連續儲存結構,其中連續儲存結構也稱為線性表,不連續儲存結構也稱為鏈式表。鏈式結構簡單的說就是不連續記憶體的陣列。
棧作為一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(push),刪除則稱為退棧(pop)。棧也稱為先進後出表。
#include "stdio.h"
#include "stdlib.h"
#define max_size (20)//定義棧的最大容量
//結點結構體
struct node;
//棧結構體
struct stack;
//建立乙個結點
struct node* creatnode(int data)
//建立棧,實際就是建立乙個struct stack的變數
struct stack* creatstack(void)
//入棧:操作方法就是鍊錶的表頭插入
//形參:mystack:要入的棧是哪乙個棧;data要入的資料是多少
void push(struct stack* mystack,int data)
struct node* newnode = creatnode(data);
newnode->next = mystack->stacktop;
mystack->stacktop = newnode;
mystack->size++;
}//出棧:操作方法就是鍊錶的表頭法刪除
void pop(struct stack* mystack)
struct node* secondnode = mystack->stacktop->next;
free(mystack->stacktop);
mystack->stacktop = secondnode;
mystack->size--;
}//獲取棧頂元素
int top(struct stack* mystack)
return mystack->stacktop->data;
}//判斷棧是否為空
int empty(struct stack* mystack)
return 1;
}int main()
//連續獲取棧頂元素並出棧
while(empty(mystack))printf("\n");
return 0;
}
by urien 2023年1月31日 20:37:28 資料結構學習 鏈式佇列的C語言實現
佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為...
資料結構學習 鏈式棧 Java實現
棧抽象資料結構 棧介面,描述棧抽象資料型別,泛型引數t表示資料元素的資料型別 package com.clarck.datastructure.stack 棧抽象資料結構 棧介面,描述棧抽象資料型別,泛型引數t表示資料元素的資料型別 author clarck param public inte c...
資料結構學習筆記 佇列的鏈式儲存(C語言實現)
佇列是一種先進先出的線性表。是線性表就會有鏈式儲存,因為先進先出,鏈佇列就是在鏈尾進鏈頭出,這樣一來,定義鏈佇列時就需要定義兩個指標,分別指向佇列的隊頭 相當於頭指標 隊尾。如果隊頭等於隊尾,則該鏈隊列為空。實現 如下 include include typedef int lqeletype ty...