顺序表、链表元素的就地逆置。

2023-11-17

目录

一、顺序表元素的就地逆置:

(1)完整代码:

(2)解题思路流程: 

 二、链表元素的就地逆置:

 (1)完整代码:

(2)解题思路流程: 


一、顺序表元素的就地逆置:

(1)完整代码:

#include<stdio.h> 

#define dataType int
#define maxLen 100

typedef struct {
	dataType arr[maxLen];
	dataType length;
}SeqList; 

void printfList(SeqList list){
	for(int i=0;i<list.length;i++){
		printf("%d ",list.arr[i]);
	}
}

int main(){
	SeqList L={{1,2,3,4,5,6,7,8,9},9};
	
	printf("元素逆置前:");
	printfList(L);
	printf("\n");
	
	int temp;
	for(int i=0;i<L.length/2;i++){
		temp=L.arr[i];
		L.arr[i]=L.arr[L.length-1-i];
		L.arr[L.length-1-i]=temp;
	}
	printf("元素逆置后:");
	printfList(L);

}

 

(2)解题思路流程: 

利用循环将数组中的首尾元素依次交换位置,循环次数为arr.length/2。

 

 二、链表元素的就地逆置:

 (1)完整代码:

#include<stdio.h>
#include<stdlib.h>

#define dataType int
//定义节点结构体
typedef struct node {
	dataType data;
	struct node*next;
} Node;

//初始化头结点
void listInitiate(Node**head) {
	*head = (Node*)malloc(sizeof(Node));
	(*head)->next = NULL;
}
//利用尾插法和数组建立链表
void listBuild(Node*head, dataType arr[], int n) {
	Node*p = head;
	for (int i = 0; i < n; i++) {
		Node*q = (Node*)malloc(sizeof(Node));
		q->data = arr[i];
		q->next = NULL;
		p->next = q;
		p = q;
	}

}

//链表元素逆置函数
void listReserve(Node*head) {
	if (head == NULL || head->next == NULL || head->next->next == NULL) {
		return;
	}
	Node*p = head->next->next;
	head->next->next = NULL;
	while (p != NULL) {
		Node*q = p->next;
		p->next = head->next;
		head->next = p;
		p = q;
	}
}

//打印链表
void printList(Node*head) {
	Node*p = head;
	while (p -> next != NULL) {
		printf("%d ", p->next->data);
		p = p->next;
	}
}

//主函数
int main() {
	Node link;
	Node*p;
	p = &link;
	dataType arr[] = {1, 2, 3, 4, 5, 6, 7};
	listInitiate(&p);
	listBuild(p, arr, 7);
	printf("元素逆置前:");
	printList(p);
	printf("\n");
	listReserve(p);
	printf("元素逆置后:");
	printList(p);


}

(2)解题思路流程: 

①将第一个元素节点和第二个元素节点分开。

Node*p = head->next->next;

head->next->next = NULL;

②再利用头插法依次将第二个元素 插入到第一个元素节点前。

p->next = head->next;

head->next = p; 

③不断循环直到第一个元素节点 处于链表末尾。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

顺序表、链表元素的就地逆置。 的相关文章

随机推荐

  • 【SQL】1 SQL 教程

    本系列教程均来自菜鸟教程 SQL 教程 SQL 是用于访问和处理数据库的标准的计算机语言 在本教程中 您将学到如何使用 SQL 访问和处理数据系统中的数据 这类数据库包括 MySQL SQL Server Access Oracle Syb
  • dolphinschedule使用shell任务结束状态研究

    背景 配置的dolphin任务 使用的是shell shell里包含了spark submit 如下截图 dolphin shell 介绍完毕 开始说明现象 有天有人调整了集群的cdp配置 executor cores max 1 我之前这
  • 我的世界java村民繁殖条件,我的世界村民无限繁殖教程 教你村民怎么生孩子

    我的世界村民无限繁殖教程 教你村民怎么生孩子 那在我的世界中想要绿宝石就要有很多的村民才可以 那下面就给大家分享一下村民怎么无限繁殖吧 还有教你村民怎么生孩子哦 游戏园我的世界官方群 325049520或256070479欢迎各路喜爱我的世
  • 初学容器:Docker

    1 环境初始化 1 1 安装git vim curl等常用工具 sudo apt update sudo apt install y git vim curl jq 1 2 ubuntu是不支持远程连接的 需要安装ssh服务 sudo ap
  • 剑指Offer【37】数字在排序数组中出现的次数(JavaScript版本)

    题目描述 统计一个数字在排序数组中出现的次数 function GetNumberOfK data k write code here var start data indexOf k count 0 i start while i lt
  • uni-app原生子窗体(app端)

    在uni app中video是原生组件 层级最高 全屏后普通前端组件无法覆盖 如果想要在视频自行绘制界面 1 app端vue页面可以用 cover view cover image 但是cover view cover image中不支持嵌
  • OPENCV C++ 找到最大内接矩形(正方形)

    OPENCV C 找到最大内接矩形 正方形 这源代码本来是检测最大内接圆形的 本人想要矩形 所以变成了正方形 谨慎使用 不是严格意义上的最大内接矩形 cv Mat map one label cv imread src png cv2 IM
  • 程序员,不止干到35岁

    程序员 不止干到35岁 在中国 程序员不能超过35岁 似乎已经是不争的事实 软件开发工作就是青春饭 顶多靠毕业这十年的时间 超过这个年龄 要不成功跃身成为管理者 要不转行进入其他领域 好像再没有更好的选择 即使偶有继续坚持作开发的 也被看成
  • Mybatis简单的增删改查和mybatis配置文件的详解

    MyBatis 1 什么是Mybatis MyBatis是一款优秀的持久层框架 MyBatis避免了几乎所有的JADBC代码和手动设置参数以及获取结果集 MyBatis可以使用简单的XML或注解来配置和映射原生类型 接口和Java的POJO
  • 使用Jest测试接口时间

    引言 在开发和测试过程中 我们经常需要对接口的性能进行评估和优化 一个重要的指标是接口的执行时间 本文将介绍如何使用Jest来测试接口的执行时间 并提供示例代码 Jest简介 Jest 是一个流行的JavaScript测试框架 广泛应用于前
  • 整理了60个 Python 实战例子,拿来即用

    大家好 最近有一些朋友问我有没有一些 Python 实战小案例 今天我整理排版了一遍 给大家分享一下 喜欢记得点赞 收藏 关注 整理了60个Python小例子 拿来即用 一 数字 1 求绝对值 绝对值或复数的模 公众号 快学Python I
  • python与pyqt5把列表中的数据写入到一个新的excel表中,并选择保存路径

    您可以使用 Python 的 openpyxl 库来实现这个功能 首先 您需要通过在命令行中运行 pip install openpyxl 来安装 openpyxl 库 然后 您可以使用以下代码来将列表中的数据写入新的 Excel 表中 f
  • mysql中drop语法错误,mysql 中drop 库的问题

    最近drop database pai 报错 ERROR 1010 HY000 Error dropping database can t rmdir pai errno 39 我就想把库文件直接删除试试 于是 rm rf usr loca
  • 区块链的基本概念

    区块链是分布式数据存储 点对点传输 共识机制 加密算法等计算机技术的新型应用模式 所谓共识机制是区块链系统中实现不同节点之间建立信任 获取权益的数学算法 区块链技术的内涵可概括为 在缺少可信任的中央节点和可信任的通道的情况下 分布在网络中的
  • All O`one Data Structure

    学习地址 双向链表 key为count数 value为存入的字符串 增加一个字符串 先判断其Node位置 再在双向链表中插入 删除也是 最大最小的字符串数在双向链表的表尾和表头 记录学习一下 class AllOne Node root M
  • STM32的介绍及MDK

    文章目录 STM32介绍 单片机 STM32命名 armV7的三个系列 STM32系统结构 CMSIS标准 STM32F4方包绍官方库包 STM32F103 STM32F103资源 STM32F103总线架构 STM32F103引脚 STM
  • 基于keras的图像分类CNN模型的搭建以及可视化(附详细代码)

    基于keras的图像分类CNN模型的搭建以及可视化 本文借助keras实现了热图像的分类模型的搭建 以及可视化的工作 本文主要由以下内容组成 Keras模型介绍 CNN模型搭建 模型可视化 Keras模型介绍 简介 Keras 是 Goog
  • Canvas实例之鼠标移动特效(彩色小球)

    实现鼠标移动跟随着绽放的彩色小球 完整代码在文档末尾 图示 思路 获取画布 获取画布 var canvas document getElementById mycanvas 获取上下文 var ctx canvas getContext 2
  • 嵌入式毕业设计 树莓派实现口罩佩戴检测识别 - 单片机 物联网 机器视觉

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 树莓派4B 5 软件说明 Debian Pi Aarch64 树莓派操作系统 vnc 远程连接树莓派 opencv 摄像头人脸数据采集 人脸数据显示等 6 部分核心代码
  • 顺序表、链表元素的就地逆置。

    目录 一 顺序表元素的就地逆置 1 完整代码 2 解题思路流程 二 链表元素的就地逆置 1 完整代码 2 解题思路流程 一 顺序表元素的就地逆置 1 完整代码 include