LinkList.h:
#pragma once
struct NODE
{
int data;
NODE *pNext;
};
void ReverseList(NODE *&pHead);
void CreateList(NODE **pHead);
void AddNode(NODE *pHead,NODE *pNode);
void ShowList(NODE *pHead);
LinkList.cpp:
#include "stdafx.h"
#include "LinkList.h"
void ReverseList(NODE *&pHead)
{
if (NULL == pHead)
{
return;
}
else
{
NODE *pLast = pHead;
NODE *pCur = pHead->pNext;
NODE *pNext = NULL;
while (pCur)
{
pNext = pCur->pNext;
pCur->pNext = pLast;
pLast = pCur;
pCur = pNext;
}
pHead->pNext = NULL;
pHead = pLast;
// return pHead;
}
}
void CreateList(NODE **pHead)
{
if (NULL == *pHead && NULL != pHead) {
*pHead = new NODE;
(*pHead)->data = 0;
(*pHead)->pNext = NULL;
}
else
{
(*pHead)->data = 0;
(*pHead)->pNext = NULL;
}
}
void AddNode(NODE *pHead,NODE *pNode)
{
if (NULL != pHead && NULL != pNode)
{
NODE *pTemp = pHead;
while (NULL != pTemp->pNext)
{
pTemp = pTemp->pNext;
}
pTemp->pNext = pNode;
pNode->pNext = NULL;
}
}
void ShowList(NODE *pHead)
{
if (NULL != pHead)
{
NODE *pTemp = pHead;
while(NULL != pTemp)
{
cout << pTemp->data << " " << endl;
pTemp = pTemp->pNext;
}
}
}
测试例子:
int main()
{
cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
NODE *pHead = NULL;
CreateList(&pHead);
for (int i = 1; i < 10; i++)
{
NODE *pNode = new NODE;
pNode->data = i;
pNode->pNext = NULL;
AddNode(pHead, pNode);
}
ShowList(pHead);
cout<<"reverse List:"<<endl;
ReverseList(pHead);
ShowList(pHead);
return 0;
}