栈 链表的实现
鏈表是數據結構,按線性順序排列,每個對象都有一個關鍵字和指針,
定義一個棧的鏈表
typedef struct Stack {int nValue;struct Stack *pNext;}Stack, *PStack;然后創建一個棧鏈表的話,首先先開辟相應的存儲空間,
給對象賦予相應的值;
PStack CreateStack() {PStack pStack = (PStack)malloc(sizeof(Stack));pStack->nValue = 0;pStack->pNext = NULL;return pStack; }檢驗棧鏈表是不是空,就是看對象是不是存儲數據, bool IsEmpty(PStack pStack) {if(NULL == pStack){printf("棧未創建成功!\n");}return pStack->pNext == NULL; }
然后在棧鏈表中壓入數據: PStack PushStack(PStack pStack, int nValue) {if(NULL == pStack){printf("棧未創建成功!\n");return NULL;}PStack pTmp = (PStack)malloc(sizeof(Stack));pTmp->nValue = nValue;pTmp->pNext = pStack->pNext;pStack->pNext = pTmp;return pStack; }刪除其中的數據:
int PopStack(PStack pStack)
{
if(NULL == pStack)
{
printf("棧未創建成功!\n");
}
? ? PStack pTmp = pStack->pNext;
? ? pStack->pNext = pTmp->pNext;
? ??
? ? int nValue = pTmp->nValue;
? ? free(pTmp);
? ? return nValue;
}
整體代碼:
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h>typedef struct Stack {int nValue;struct Stack *pNext;}Stack, *PStack;PStack CreateStack() {PStack pStack = (PStack)malloc(sizeof(Stack));pStack->nValue = 0;pStack->pNext = NULL;return pStack; }bool IsEmpty(PStack pStack) {if(NULL == pStack){printf("棧未創建成功!\n");}return pStack->pNext == NULL; } PStack PushStack(PStack pStack, int nValue) {if(NULL == pStack){printf("棧未創建成功!\n");return NULL;}PStack pTmp = (PStack)malloc(sizeof(Stack));pTmp->nValue = nValue;pTmp->pNext = pStack->pNext;pStack->pNext = pTmp;return pStack; }//這里每次都會刪除鏈表中的一個結點 所以不用傳遞PStack *pStack; int PopStack(PStack pStack) {if(NULL == pStack){printf("棧未創建成功!\n");}PStack pTmp = pStack->pNext;pStack->pNext = pTmp->pNext;int nValue = pTmp->nValue;free(pTmp);return nValue; }void Destroy(PStack pStack) {while (!IsEmpty(pStack)){PopStack(pStack);}free(pStack);pStack = NULL; } int main() {PStack pStack = CreateStack();for (int i = 0; i < 10; i++){pStack = PushStack(pStack, i);}while (!IsEmpty(pStack)){printf("%d ", PopStack(pStack));}Destroy(pStack);system("pause");return 0; }《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
- 上一篇: 数据结构-----栈
- 下一篇: OpenCV的支持向量机SVM的程序