数据结构中链表是其中很重要的一部分,那么就以单链表的逆置为例,大体回顾链表的头插
单链表的逆置算法思想:先让头结点指向空,定义一个指针P指向原来头结点的next域,在定义一个指针q和p指向同一个位置,p是用来保存链表并移动的,q指向的是每次插入的位置,通过循环,将链表中的节点一个个插入
具体代码实现如下:
#include<stdio.h>
#include<assert.h>
#include<malloc.h>
typedef struct Node
{
int data;
Node * next;
}Node,*PNode;
Node * Inversion(PNode L)
{
Node *p = 0;
Node *q = 0;
p = L->next;
L->next = NULL;
while(p != NULL)
{
q = p;
p = p->next;
q->next = L->next;
L->next = q;
}
return L;
}