#pragma once
#include <stdio.h>
#include <assert.h>
#include <malloc.h>
typedef int DataType;
typedef struct ListNode
{
DataType data;
struct ListNode *next;
}ListNode;
static ListNode *CreateNode(DataType data)
{
ListNode *newNode = (ListNode *)malloc(sizeof(ListNode));
assert(newNode);
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void ListPushBack(ListNode ** ppFirst, DataType data)
{
ListNode *newNode = CreateNode(data);
if (*ppFirst == NULL)
{
*ppFirst = newNode;
return;
}
ListNode *cur = *ppFirst;
while (cur->next != NULL)
{
cur = cur->next;
}
cur->next = newNode;
}
ListNode *ReverseList(ListNode *first)
{
ListNode *p1, *p2, *p3;
p1 = NULL;
p2 = first;
p3 = first->next;
while (p2 != NULL)
{
p2->next = p1;
p1 = p2;
p2 = p3;
if (p3 != NULL)
{
p3 = p3->next;
}
}
return p1;
}
void TestReverseList()
{
ListNode *first = NULL;
ListPushBack(&first, 1);
ListPushBack(&first, 2);
ListPushBack(&first, 3);
ListPushBack(&first, 4);
ListPushBack(&first, 5);
ReverseList(first);
}
逆置单链表
最新推荐文章于 2024-08-13 21:27:16 发布