- 循环方式实现逆序单链表
- 关于如何逆转,过程分析,也可以看单链表逆序,分析的超级好!
- 还有一篇线性结构:单向链表的逆转 也很形象直观
- 单链表前k个数逆序
例如:输入:1->2->3->4->5 k=2
输出:2->1->3->4->5
- 单链表每k个逆序一次(递归方式)
例如:输入:1->2->3->4->5 k=2
输出:2->1->4->3->5
- 小白一个,若有错误,欢迎指正。(●’◡’●)
1、单链表逆序

#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node{
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Reverse(List L){
PtrToNode Old_head,New_head,Tem;
Old_head=L;
New_head=NULL;
while(Old_head){
Tem=Old_head->Next;
Old_head->Next=New_head;
New_head=Old_head;
Old_head=Tem;
}
L=New_head;
return L;
}
List Read()
{
int n;
List head=NULL,p=NULL,q=NULL; //head是头结点,p指的是链表的最后一个元素,q指的是要插入链表里的元素
head=(List)malloc(sizeof(struct Node));
if(!head) exit(0);
head->Next=NULL;
p=head;
scanf("%d",&n);
while(n--)
{
q=(List)malloc