標籤:
第一版(單向有類型):
//author:Yuqingmu//當不能用STL時,自己實現一個無類別鏈表#include "MemLeak_Check.h"#include "stdafx.h"#include <stdlib.h>typedef struct Node{ int nValue; Node *next;}NODE,*pNODE;int PushDataToList(NODE ** pHead,int nData){ NODE *plastNode = *pHead; NODE *pNewNode = (NODE*)malloc(sizeof(NODE)); if(pNewNode == NULL) { return -1; } pNewNode->nValue = nData; if(*pHead == NULL) { *pHead = pNewNode; pNewNode->next = NULL; (NODE*)(*pHead)->next = NULL; } else { pNewNode->next = plastNode; *pHead = pNewNode; } return 0;}NODE *GetDataFromList(NODE ** pHead,int nNum){ NODE *pTemp = *pHead; while (pTemp != NULL) { if(pTemp->nValue == nNum) { return pTemp; } pTemp = pTemp->next; } return NULL;}int ShowList(NODE** pHead){ if(*pHead == NULL) { printf("No data in List\n"); return 0; } NODE *pTemp = *pHead; static int nIndex = 1; while (pTemp != NULL) { printf("list data %d:%d\n",nIndex++,pTemp->nValue); pTemp = pTemp->next; } return 0;}int FreeAllNodeFromList(NODE ** pHead){ NODE *pTemp = *pHead; while (pTemp != NULL) { NODE *pFreeTemp = pTemp->next; free(pTemp); pTemp = pFreeTemp; } *pHead = NULL; return 0;}int _tmain(int argc, _TCHAR* argv[]){ StartMemLeakCheck(); NODE *pHead = NULL; PushDataToList(&pHead,1); PushDataToList(&pHead,2); PushDataToList(&pHead,5); PushDataToList(&pHead,55); ShowList(&pHead); NODE * pGet = GetDataFromList(&pHead,5); FreeAllNodeFromList(&pHead); PushDataToList(&pHead,525); ShowList(&pHead); return 0;}
C下鏈表的實現