用陣列和鍊錶實現棧

2021-08-16 18:03:04 字數 1245 閱讀 6725

完成乙個棧總共需要完成以下操作:

初始化入棧

出棧檢視棧頂元素

檢視棧的容量

清空棧。

首先是簡單的,用陣列做的,會有越界的可能。

#include #include typedef struct stack  stack;

stack * s ;

// 生成棧

void initstack()

// 入棧,push

void push(int data)

s->top ++;

s->data[s->top] = data;

}// 出棧,pop

void pop()

printf("資料 %d 即將出棧\n",s->data[s->top]);

s->top--;

}// 清空棧

void clearstack()

}// 獲取棧頂元素

void topitem()

printf("此棧中元素數量為 %d 個,棧頂為 %d\n",s->top+1,s->data[s->top]);

}int main()

用鍊錶做的,理論上無上限,除非計算機記憶體都用完了。

#include #include typedef struct node  node;

typedef struct stack stack;

stack * s ;

// 生成棧

void initstack()

// 入棧,push

void push(int data)

// 出棧,pop

void pop()

node * n = s->data;

printf("資料 %d 即將出棧\n",n->data);

s->data=n->next;

free(n);

s->count--;

}// 清空棧

void clearstack()

}// 獲取棧頂元素

void topitem()

printf("此棧中元素數量為 %d 個,棧頂為 %d\n",s->count,s->data->data);

}int main()

計算機的函式呼叫就是採用了棧結構,還有逆波蘭表示式(可以算加減乘除和括號)的演算法都用到了棧結構。

用鍊錶實現棧

基於介面實現 public inte ce stack引用到上次已經實現的鍊錶 linkedlistlist new linkedlist 1 獲取棧的長度 獲取棧的長度 return public int getsize 2 判斷棧是否為空 判斷棧是否為空 return public boolea...

用鍊錶實現佇列和棧

1.定義佇列介面 public inte ce myqueue 2.設計介面的實現類 首先佇列是乙個容器,要設定容器的各種方法,我們需要一些原料,這裡我選擇兩個節點和乙個表示容器大小的n,頭節點first用於獲取佇列頭部元素,last指向佇列尾部,同時也作為乙個游標,來迴圈訪問佇列各個元素。關於方法...

棧 陣列與鍊錶實現

棧的實現一般由陣列與鍊錶實現,但陣列實現較為常見,鍊錶實現一般不常用。以下給出兩種實現方式的完整 一 陣列實現 注意要點 1.棧為空時 top 1 2.棧滿時 top capacity 如下 adt stack 儲存結構 陣列 struct stackrecord typedef stackreco...