資料結構學習 鏈式棧的C語言實現

2021-10-18 13:20:08 字數 1550 閱讀 2149

幾個概念:

計算機中的儲存資料結構主要分為連續儲存結構不連續儲存結構,其中連續儲存結構也稱為線性表,不連續儲存結構也稱為鏈式表。鏈式結構簡單的說就是不連續記憶體的陣列。

棧作為一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。

棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(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...