**:
/* 2 棧的鏈式結構實現 */
#include
#include
#include
typedef
inttype;
//元素型別別名
//宣告順序棧結構體
typedef
struct
stack
stack;
void
init(stack**);
//初始化
void
push(stack**,type);
//入棧
type pop(stack**);//出棧
void
clear(stack**);
//清空
bool
isempty(stack*);
//判斷棧是否已滿
intlength(stack*);
//返回棧的元素個數
void
ergodic(stack*);
//遍歷棧中元素
intsearch(stack*,type);
//搜尋,返回具棧頂首次出現位置
intmain()
//遍歷測試
printf("遍歷棧中元素:"
);
ergodic(top);
scanf("%*[^\n]"
);
scanf("%*c"
);
//搜尋測試
printf("輸入要搜尋的元素:"
);
scanf("%d"
,&elem);
intpos =search(top,elem);
if(pos)
else
printf("查詢失敗!\n"
);
//棧長度測試
count = length(top);
//棧清空測試 棧清空測試與出棧測試不能同時進行
//clear(&top);
//出棧測試
printf("棧中有%d個元素\n"
,count);
while
(count--)
printf("出棧元素是:%d\n"
,pop(&top));
//棧長度測試
printf("棧中有%d個元素\n"
,length(top));
return
0;
} //棧初始化
//因為要更新棧頂指標本身的值,所以要用二級指標
void
init(stack** ss)
//入棧操作
//因為要更新棧頂指標本身的值,所以要用二級指標
void
push(stack** ss,type e)
else
printf("記憶體申請失敗,緩衝區將清空!\n"
);
} //出棧操作
//因為要更新棧頂指標本身的值,所以用二級指標
type pop(stack** ss)
} //判斷是否為空
bool
isempty(stack* s)
//返回棧的長度
intlength(stack* s)
return
count;
} //遍歷棧
void
ergodic(stack* s)
printf("\n"
);
} //搜尋棧中元素
//返回元素距離棧頂的位置,如果有多個相同值,則返回首次出現的位置
intsearch(stack* s,type e)
pos++;
s=s->next;
} return
pos;
} //清空棧
//因為要更新棧頂指標本身的值,所以要用二級指標
void
clear(stack** ss)
}
鏈式結構棧
三 佇列的鏈式儲存結構 單鏈表 1 定義 1.使用有頭結點的單鏈表來模擬 2.使用head和rear指標來模擬佇列 3.head為佇列頭的前乙個節點,rear為隊尾節點 2 隊尾插入操作 在rear後面插入元素 3 刪除隊頭元素 刪除fhead的下乙個元素 如果刪除前只有乙個元素,那麼在刪除後要讓r...
棧的鏈式儲存結構
棧的鏈式表示,即鏈棧。由於棧的操作是線性表操作的特例,因此鏈棧可以看成運算受限的單鏈表。其特點如下 鏈棧無棧滿問題,空間可擴充 插入和刪除僅在棧頂處執行 鏈式棧的棧頂在鏈頭 適合於多棧操作。stacklist.h include class listint int data listint link...
棧的鏈式儲存結構
棧的鏈式儲存結構稱為鏈棧,對於鏈棧來說,基本不存在棧滿的情況,除非記憶體已經沒用可以使用的空間,如果真的存在這種情況的話,那麼就說明此時的計算機作業系統已經快要宕機了,那麼我們就沒必要再去關注溢位的問題了 關於鏈棧的結構如下所示 關於鏈棧的程式定義如下所示 typedef struct stackn...