#include <stdio.h>
#include <stdlib.h>
struct ListNode
{
int number_key;
struct ListNode * pNext;
};
/*
* 创建链表
* */
void CreateList(struct ListNode **pHead )
{
struct ListNode *pList = NULL;
struct ListNode *pTemp;
int i = 0;
for(; i < 10; i++)
{
pTemp = (struct ListNode *)malloc(sizeof(struct ListNode));
pTemp->number_key = i;
pTemp->pNext = NULL;
if( pList == NULL)
{
pList = pTemp;
*pHead = pList;
}
else
{
pList->pNext = pTemp;
pList = pList->pNext;
}
}
}
/*
* 反转链表
* */
void ReverseList(struct ListNode **pHead)
{
struct ListNode *pNextNode = NULL;
struct ListNode *pCurrentNode = *pHead;
struct ListNode *pPrevNode = NULL;
while(pCurrentNode != NULL)
{
pNextNode = pCurrentNode->pNext;
if(pNextNode == NULL)
{
*pHead = pCurrentNode;
}
pCurrentNode->pNext = pPrevNode;
pPrevNode = pCurrentNode;
pCurrentNode = pNextNode;
}
}
/*
* 打印出链表
* */
void ShowList(struct ListNode *pHead)
{
struct ListNode *temp = pHead;
printf("shwo list:\n");
while(temp->pNext != NULL)
{
printf("%4d", temp->number_key);
temp = temp->pNext;
}
printf("%4d", temp->number_key);
printf("\n");
}
int main()
{
struct ListNode *pList = NULL;
CreateList(&pList);
ShowList(pList);
ReverseList(&pList);
ShowList(pList);
return 0;
}
反转链表练习
最新推荐文章于 2024-06-19 22:00:01 发布