堆疊的抽象資料型別定義為:
型別名稱: 堆疊(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 取...