3.12
编写一个非递归过程以O(N)时间反转单链表
#include <stdio.h>
#include <stdlib.h>
typedef struct Node *ptrToNode;
typedef ptrToNode Head;
typedef ptrToNode Position;
struct Node
{
int x;
Position next; /* data */
};
Head reverse(Head head)
{
Position begin, mid, last;
if (head == NULL || head->next == NULL)
{
return head;
}
else
{
begin = NULL;
mid = head;
last = head->next;
while (last != NULL)
{
mid->next = begin;
begin = mid;
mid = last;
last = last->next;
}
head = mid;
return head;
}
}