堆疊的陣列實現

2021-10-25 08:46:03 字數 1614 閱讀 5156

堆疊的抽象資料型別定義為:

型別名稱: 堆疊(stack)

資料物件集: 乙個有0個或多個元素的又窮線性表

操作集: 對與乙個具體長度為正整數maxsize的堆疊, 堆疊中元素的型別為elementtype,

堆疊的基本操作主要有:

(1) ptr_stack(int maxsize): 生成空棧, 其最大長度為maxsize

(2) int isfull(ptr_stack ptr): 判斷棧是否已滿, 若棧中元素等於maxsize時返回true,

否則返回false

(3) int push(ptr_stack ptr, elementtype x): 將元素x壓入棧. 若棧已滿則返回false,

否則將元素x壓入堆疊頂並返回true

(4) int pop(ptr_stack ptr): 刪除並返回棧頂元素. 若堆疊為空則返回錯誤資訊.

#include #define true 1 // 表示真

#define false 0 // 表示假

typedef int elementtype;

struct s_stack ;

typedef struct s_stack stack;

typedef struct s_stack* ptr_stack;

// 函式宣告

ptr_stack createstack (int maxsize);

int isfull (ptr_stack ptr);

int push (ptr_stack ptr, elementtype x);

void print (ptr_stack ptr);

elementtype pop (ptr_stack ptr);

int main ()

print(p_stack);

/* 入棧測試結束 */

/* 出棧測試開始 */

int popvalue = pop(p_stack);

printf("出棧的元素是: %d\n", popvalue);

print(p_stack);

/* 出棧測試結束 */

return 0;

}// 生成空棧

ptr_stack createstack (int maxsize)

// 判斷棧是否滿

int isfull (ptr_stack ptr) else

}// 入棧

int push (ptr_stack ptr, elementtype x)

ptr->top += 1;

ptr->data[ptr->top] = x;

return true;

}// 列印

void print (ptr_stack ptr)

printf("\n");

}// 出棧

// 返回棧頂元素, 並把棧頂指標-1

elementtype pop (ptr_stack ptr)

ptr->top = ptr->top - 1;

return ptr->data[ptr->top + 1]; // 返回出棧元素的值

}

堆疊的陣列實現

堆疊的抽象資料型別定義為 型別名稱 堆疊 stack 資料物件集 乙個有0個或多個元素的又窮線性表 操作集 對與乙個具體長度為正整數maxsize的堆疊,堆疊中元素的型別為elementtype,堆疊的基本操作主要有 1 ptr stack int maxsize 生成空棧,其最大長度為maxsiz...

基於陣列的堆疊實現

定義函式介面標頭檔案 sa.h ifndef sa h define sa h include 堆疊 typedef struct stack stack 分配記憶體並初始化為空堆疊 void stack init stack stack,size t cap 釋放記憶體並恢復到初始狀態 void ...

陣列實現堆疊 Java實現

package struct 介面 inte ce iarraystack 實現介面的stackimpl類 class stackimpl implements iarraystack 求堆疊容量 public int length 求堆疊中元素的個數,即堆疊大小 public int size 取...