标签:
第一版(单向有类型):
//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; }
标签:
原文地址:http://my.oschina.net/Yuqingmu/blog/362114