完成乙個棧總共需要完成以下操作:
初始化入棧
出棧檢視棧頂元素
檢視棧的容量
清空棧。
首先是簡單的,用陣列做的,會有越界的可能。
#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...