码迷,mamicode.com
首页 > 其他好文 > 详细

C下链表的实现

时间:2014-12-30 01:56:50      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

第一版(单向有类型):

//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下链表的实现

标签:

原文地址:http://my.oschina.net/Yuqingmu/blog/362114

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!