C語言順序棧的基本操作

2021-07-26 05:25:45 字數 1053 閱讀 6303

順序棧的基本操作包括:初始化、入棧、出棧、取棧頂元素四個操作。下面是實現**:

在初始化之前,老規矩,先進行預定義:

#define ok 1

#define error 0

#define overflow -2

#define maxsize 100

typedef int status;

typedef intselemtype;

typedef structsqstack;

初始化:

status initstack(sqstack*s)

初始化的目的是為了給順序棧分配足夠的儲存空間,之後判斷是否分配成功,如果分配成功的話,由於沒有任何元素,故將棧底位址賦值給棧頂(s->top),將分配的空間大小賦值給s->stacksize。

入棧:

status push(sqstack *s,selemtype e)

入棧的時候,必須判斷順序棧是否有足夠的空間儲存新元素,如果棧頂位址減棧底位址等於最大儲存長度,說明順序棧已經沒有足夠的空間,則返回錯誤。如果還有剩下足夠的空間,將e的值儲存在棧頂,並讓棧頂指標s->top後移一位。

出棧:

status pop(sqstack *s,selemtype *e)

出棧的時候需要判斷棧是否為空棧,如果是空棧返回錯誤。不為空棧的話將棧頂前一位的元素值賦值給*e,並讓棧頂指標s->top前移一位,因為順序棧中棧頂是任然未賦值的元素。

取棧頂元素:

selemtype gettop(sqstacks)

和出棧一樣,取棧頂元素同樣需要判斷是否為空棧,如果是空棧返回錯誤。如果不為空棧,返回棧頂的前一位元素的值。

加入main()測試:

int main(void)

}return 0;

}

C 順序棧基本操作

1 include 2 define stacksize 50 設棧中元素個數為50個 3using namespace std 45 struct seqstack6 1011 構造乙個空棧 12 void initstack seqstack s 1316 17 將x置入s棧新棧頂 18 boo...

(C語言實現)什麼是順序棧? 順序棧的基本操作

棧一共有兩種儲存結構 1.順序棧 2.鏈棧 順序棧用c語言描述是,因為不能確定整個過程中所需最大空間的大小,所以我們可以設乙個初始容量,在棧的空間不夠時在逐段擴大。定義乙個順序棧typedef struct stack stack 基本操作初始化棧 判空輸出棧 入棧出棧 輸出棧中元素個數 輸出棧頂元...

棧 順序棧的基本操作

棧也是一種線性表,但是棧是一種操作受限的線性表,因此也可稱它為限定性的資料機構。棧是限定僅在表尾進行插入或刪除操作的線性表。棧的表尾為它的棧頂,表頭為它的棧底。先進入棧的後出棧,後進入棧的先出棧。所以,棧被稱為後進先出的線性表。順序棧基本操作的實現 include include define in...