单链表就地逆置

算法思想:构建一个带头结点的单链表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;
}
相关推荐
SuperByteMaster20 分钟前
keil 工程 .gitignore配置文件
c语言
老花眼猫4 小时前
编制椭圆旋转绘图函数
c语言·经验分享·青少年编程·课程设计
iCxhust7 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
qeen877 小时前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
图码8 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
handler018 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
我星期八休息8 小时前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表
热心网友俣先生8 小时前
2026年第二十三届五一数学建模竞赛C题超详细解题思路+各问题可用模型推荐+部分模型结果展示
c语言·开发语言·数学建模
漂流瓶jz8 小时前
UVA-1152 和为0的4个值 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·二分查找·题解·aoapc·算法竞赛入门经典·uva
你撅嘴真丑9 小时前
map 与 set容器的应用--话题焦点人物
数据结构