单链表就地逆置

算法思想:构建一个带头结点的单链表L,然后访问链表中的每一个数据结点,将访问到的数据结点依此插入到L的头节点之后。

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LinkNode {
	ElemType data;
	LinkNode* next;
}LinkNode, * LinkList;
//尾插法建立单链表
void creatLinkList(LinkList& L) {
	L = (LinkNode*)malloc(sizeof(LinkNode));
	L->next = NULL;
	LinkNode* pTail = L;
	int num;
	while (scanf("%d", &num) && num != -1) {
		LinkNode* pnode = (LinkNode*)malloc(sizeof(LinkNode));
		pnode->data = num;
		pnode->next = pTail->next;
		pTail->next = pnode;
		pTail = pnode;
	}
}
//打印输出
void printLinkList(LinkList L) {
	LinkNode* pCur = L->next;
	while (pCur != NULL) {
		printf("%d ", pCur->data);
		pCur = pCur->next;
	}
}
//数据结点头插到L之后
void insertNode(LinkList& L,LinkNode* pnode) {
	pnode->next = L->next;
	L->next = pnode;
}
//单链表就地逆置
void reserveList(LinkList& L) {
	LinkNode* pCur = L->next;
	L->next = NULL;
	while (pCur != NULL) {
		LinkNode* pnode = pCur;
		pCur = pCur->next;
		insertNode(L, pnode);
	}
}
int main() {
	LinkList L;
	creatLinkList(L);
	reserveList(L);
	printLinkList(L);
	return 0;
}
相关推荐
Chenyu_3106 小时前
12.找到字符串中所有字母异位词
c语言·数据结构·算法·哈希算法
门前云梦7 小时前
《C语言·源初法典》---C语言基础(上)
c语言·开发语言·学习
SY师弟9 小时前
51单片机——计分器
c语言·c++·单片机·嵌入式硬件·51单片机·嵌入式
keepquietl9 小时前
MQTT示例体验(C)
c语言·开发语言
豪斯有话说10 小时前
C++_哈希表
数据结构·c++·散列表
Wangshanjie_9811 小时前
【C语言】-递归
c语言
记得早睡~11 小时前
leetcode73-矩阵置零
数据结构·leetcode·矩阵
a.30212 小时前
C++ 时间处理指南:深入剖析<ctime>库
数据结构·c++·算法
CodeWithMe14 小时前
【C/C++】高效的位操作
c语言·c++
学习噢学个屁15 小时前
基于STM32物联网智能鱼缸智能家居系统
c语言·stm32·单片机·嵌入式硬件·物联网·智能家居