C下链表的实现

第一版(单向有类型):

//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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值