NOTICE: 本篇代码是按照源码的书写顺序所写,复制之后可直接运行。
环境: vscode
题目:
试写一算法,对单链表进行逆置
分析:
单链表的逆置需要设置两个指针,第一个进行遍历单链表;第二个进行节点的反向连接。
单链表的逆置其实就是反复利用删除和插入操作。
主意:本题所说的逆置不能开辟新的内存空间,这样一来就不能创建一个新的表然后利用尾插法进行“逆置”了。
代码:
初始化单链表:
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef int Status;
typedef struct LNode
{
ElemType data;
LNode *next;
}LNode, *LinkList;
Status InitList(LinkList &L)
{ // 初始化单链表 L
L = (LNode*)malloc(sizeof(LNode));
L->next = NULL;
return OK;
}//InitList
生成单链表:
Status CreateList(LinkList &L, int e)
{ // 创建单链表 L
LinkList p = L;
while(p->next)
p = p->next;
LinkLis