指针在数组和链表中的访问使用误区

SPSS(二)SPSS实现多因素方差分析模型(图文教程+数据集) SPSS(二)SPSS实现多因素方差分析模型 单因素方差分析上一篇博客https://blog.youkuaiyun.com/LuYi_WeiLin/article/details/89917656已经介绍完毕 这篇博客我们主要来学习多因素方差分析 多因素方差分析,就是同时考虑若干个控制因素的情况下,分别分析它们的改变是否造成观察变量的显著变动 (多个自变量,一个因变量)自变量类型以分类变量为主也可以... 阅读详情

本来没想过在那里记下自己的学习经历,但是今天发现真的有必要记一下自己的经验,以前就遇到过这样的错,以为解决了就算了,但是现在又遇到了,还是留下这次教训的痕迹吧!

关于C语言方面的基础我还是很有自信的,但是今天一个小程序真是让我颜面尽失啊!要求建立一个单链表,然后将这个单链表逆置,这其实是一个很简单的数据结构问题,本来也没当回事,但是就在这里弄得血淋淋的......

废话不多说了,看下面这个单链表的逆置吧!这是我刚开始随即写的将一颗链表逆置代码

 struct LNode
 {
   int data;
   struct LNode *next;
 };
 typedef struct LNode *LinkList;
int Reverse(LinkList L)
 {
 //将链表逆置
 LinkList p,q,r,t;
 p=q=L->next;
 r=t=L;
 for(;;)
 {
 
  //if(!(q->next)) break;
  while(p->next !=NULL)
  {        //现在看来这两行其实很明显有错误,但是当和数组中指针的访问中混淆了的时候根本想不到这里有错的根本原因就
   p++;
                  //链表结点在内存中是随机分配的内存,而数组是分配的一块儿内存地址连续的区域,所以再用P++,r++时指针向下游
   r++;           //走,指向了此结点的下一区域,但是下一结点并不在这儿,这样访问链表结点就是错的,而在数组中这种访问是对
  }//的此处只需修改为p=p->next;r=r->next;
  r->next = NULL;
   p->next = q;
  t->next = p;
  if(r==q) break;
  t = t->next;
 // r = p->next;
  r = p;
  p = q;
 // if(!p->next) break;
  
 }
 
return 0;
 }

这是一个很简单的程序但是对内存模型理解不清楚和指针的访问不熟悉就很容易出错,这真是血的教训啊!

苏宁易购手机行情比价系统:构建一个完整的Python爬虫实战指南 在当今数字化时代,智能手机已成为人们生活中不可或缺的一部分。随着各大手机品牌每年推出多款新品,消费者面临着越来越多的选择。然而,不同电商平台、不同时间段的价格波动使得消费者很难把握最佳购买时机。苏宁易购作为国内领先的电商平台之一,拥有丰富的手机商品信息和价格数据。本文将带领读者构建一个完整的苏宁易购手机行情比价系统,帮助消费者实时掌握手机价格动态。 阅读详情

相关推荐

自动驾驶入门到进阶完整指南:感知、预测、规划、端到端、仿真测评与场景挖掘全解析

对小白来说,不建议一开始直接冲端到端大模型。先学数据和坐标系:否则所有结果都看不懂。再学 LiDAR 3D 检测:最容易建立空间感。再学 BEV/多相机感知:这是当前主流。再学轨迹预测:理解交互和多模态。再学规划控制:理解车为什么这样开。再学仿真和闭环评测:理解 open-loop 和 closed-loop 差异。最后学端到端/VLM/VLA:这时候你才知道它到底替代了哪些模块。贯穿始终学习场景挖掘和安全测评:这是工业界最核心的能力之一。

u013250861的博客 386

数组、指针、链表及结构体

1.数组 数组是最基本的构造类型,它是一组相同数据类型数据的有序集合, 数组中的元素在内存中连续存放, 用数组名和下标可以唯一地确定数组元素。 一维数组的定义:类型名 数组名[数组长度] 二维数组的定义: 类型名 数组名[行长度][列长度] 一维数组的引用:数组名[下标] (/*C语言编译器不检查数组下标是否越界,但是一旦出现下标越界,可能将数据写到其他变量的储存空间中从而引...

冥更的博客 1042

语义分割系列7-Attention Unet(pytorch实现)

本文介绍了AttentionUnet模型和其主要中心思想,并在pytorch框架上构建了Attention Unet模型,构建了Attention gate模块,在数据集Camvid上进行复现。

yumaomi的博客 2万+

从洗衣机到无人机:深入浅出聊聊FOC和SVPWM如何让电机“安静又听话”

本文深入探讨了FOC(磁场定向控制)和SVPWM(空间矢量脉宽调制)技术如何使电机运行更加高效和安静。从家电到无人机,这些技术通过精确的磁场控制和电压矢量调制,显著降低了噪音和能耗,提升了动态响应速度。文章还通过实际案例展示了FOC与SVPWM的黄金组合在各种应用场景中的卓越表现。

weixin_30425949的博客 565

logisim实验六:MIPS运算器设计

实验目的 学生理解算术逻辑运算单元(ALU)的基本构成,掌握 Logisim 中各种运算组件的使用方法,熟悉多路选择器的使用,能利用前述实验完成的 32 位加法器、 Logisim 中的运算组件构造指定规格的 ALU 单元。 设计要求 利用前面实验封装好的 32 位加法器以及 logisim 平台中现有运算部件构建一个 32 位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符号

gyp0205的博客 2万+

Anaconda报错no qt platform plugin could be initialized

今天因为在anaconda中安装了一个新包,安装成功后运行python 程序报错:no qt platform plugin could be initialized。 1.安装Anaconda3-4.2.0-Windows-x86_64,对应python版本为3.5.2,scikit learn版本是0.17。因为要用Isolation Forest算法,只有0.18以上版本scikit learn才包含此算法,所以想更新scikit learn。 conda install scikit-lear

zhang1806618的博客 1万+

数据结构 总结2 线性表

数据结构复习2 线性表

qq_50918834的博客 2266

《民机适航入门指南:从法规学习到项目实践的全面解析》

适航(Airworthiness)是指航空器、其发动机、螺旋桨和其他部件在规定条件下,能够安全飞行并满足有关航空法规规定的条件。简而言之,适航代表了航空器在任何时候都能安全运营的状态。适航在民用航空领域尤为关键,因为飞机必须经过严格的适航认证才能投入商用。这些认证的目标是确保飞机能够在广泛的运行条件下保持飞行安全,从而保护乘客、机组和地面人员的生命财产安全。适航法规覆盖了飞机的整个生命周期,包括设计、制造、测试、运营、维护和报废。

qq_41854911的博客 992

C语言——详解二级指针及其与二维数组的误区、指针定义大全

C语言中的二级指针(也称为指针的指针)是指一个指针变量,它存储的不是普通的值,而是另一个指针的地址。这意味着你可以通过二级指针来访问和修改另一个指针的值。。

weixin_45720999的博客 3728

133.在 Vue3 中使用 OpenLayers 实现画多边形、任意编辑、遮罩与剪切处理功能

《Vue3+OpenLayers实现多边形绘制与区域处理》摘要:本文介绍如何基于Vue3+OpenLayers+ol-ext实现地图多边形交互功能。核心功能包括:鼠标绘制任意多边形、拖动顶点编辑边界、遮罩显示(非选区变红)、选区剪切显示及功能重置。技术方案采用OpenLayers处理地图渲染,ol-ext实现高级遮罩/剪切效果,ElementPlus提供UI控件。该方案适用于城市规划、园区展示等需要区域标记的场景,完整代码展示了从初始化、绘制、编辑到特效处理的全流程实现。

小彭的博客 958

【教程4>第6章>第15节】 基于I+jQ复数信号的LS信道估计和均衡实现1——matlab仿真分析,QPSK为例

在基于QPSK调制的通信系统中,LS信道估计和均衡是用于补偿信道失真、提高信号传输质量的重要技术。以下将详细介绍基于I+jQ复数信号的 LS 信道估计和均衡的实现原理与过程。可以看到,通过线性插值之后,QPSK信号的星座图可以模糊的看到四个星座点(图2),通过非线性插值之后,可以清晰的看到QPSK的四个星座点(图3)。可以看到,信道均衡显著提高了通信系统的可靠性和有效性。

FPGA/MATLAB学习教程/源码/项目合作开发 657

关于数组和链表的常见误区

文章目录前言一、关于数组的误区二、关于链表的误区单向链表:双向链表:链表实现LRU算法总结 前言 数据结构与算法,从基础的数据结构开始回顾,然后一直到算法深入,记录一些算法心得和笔记。知识输出才不容易遗忘,也方便自己随时复习学过的知识,然后每日一总结今天的算法刷题。 提示:以下是本篇文章正文内容。 一、关于数组的误区 刚学习数据结构这门课的同学,问起数组的特点,可能会回答到查找方便,查找时间复杂度为O(1),插入和删除效率低,时间复杂度为O(n)。 乍一听好像没有毛病。其实是有错误的。 数组是一个线性表

weixin_53219254的博客 511

(10)三相三绕组变压器的建模仿真

建立了三相三绕组变压器组的Simulink仿真模型,通过实例进行了仿真计算。

weixin_45670943的博客 1141

(2)数组与链表原理和使用场景讲解

1.数组结构、原理和使用场景 数组官方定义:数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 数组使用容易,但从线性表和非线性表角度思考效果更好一些。 (1) 线性表 顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。 (2) 非线性表 相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性...

大表哥的博客 4732

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

数组和链表到底应该如何选择?

前言 对于数组和链表这两种最基本的数据结构你应该并不会陌生,尽管他们看起来都非常的简单,但是无论是我在与别人交流或者面试中问到一些相关的问题时,我发现大多数人并没有完全的理解他们两者之间的区别,所以决定写这样一篇文章来对两者进行分析与比对。 数组 先来说说数组,我们都知道数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表,顾名思义就是一种线性的结构只有前后两个方向,链表实际上也是线性表结构,还有队列、栈这些都是。 随机访问 我们都知道数组可以做到O(1)的随机访问,那原

自律使我自由 885

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

简单的指针链表实现

简单的指针链表实现 说明:本代码实现方案来源于MOOC。 1.链表 链表是这样一种数据结构,能够容纳任意多元素(在一定范围内),并支持元素的插入、查询操作。一个完备的链表时间复杂度如下:插入O(1),查找O(n)。(可以发现与数组类似,因此链表也被称为变长数组) 确定一个链表的思路类似动态规划,知道足够的边界状态和状态转移方式就可以获得整个状态数组。确定一个链表应当需要每一个元素的值以及元素之间的...

qq_35488090的博客 832

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

再论一维数组名,二维数组名及指针联系与区别

一、概念详解: 指针:指针与“int a”,“float b”一样,也是一种变量,只是指针变量中存储的是内存单元的地址,这是与“int a”和“float b”的本质区别,C语言的精华就在于指针、结构体和链表。 一维数组:定义一维数组之后,即在内存中分配一段连续的地址空间,如C语言中,int num[5],在32位系统中,int占据4个字节,现假设num[0]的地址空间为0x00000004,那么num[1]的地址空间即为0x00000008 (0x00000004 + 4),num[2]的地址空间即为

tecoes的博客 1946

Java版LeetCode热题100之回文链表:从数组复制到快慢指针的深度解析

int val;快慢指针威力:一次遍历解决中点查找问题链表操作组合:反转 + 比较 + 恢复的完整流程空间复杂度意识:O(1)空间解法的实际价值工程实践原则:无副作用、边界处理、代码健壮性。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 900

(PTA)数据结构(作业)3、链表

作业而已,仅供参考,欢迎交流指正,共同进步,我怂,喷就是你对。

Misasagi Inori的博客 8794

01_数组与链表

老鸟:数组是一种线性数据结构,用于存储相同类型的元素。数组的元素在内存中是连续存储的,所以可以通过索引快速访问。# 数组示例菜鸟:嗯,这个我知道,可以通过索引快速访问,比如array[2]就可以得到3。老鸟:对,但插入和删除数据时,数组并不高效。如果你要在数组中间插入或删除元素,需要移动其他元素。老鸟:总结一下,数组和链表各有优缺点。数组适合快速访问元素,但在插入和删除操作上性能较差。链表适合频繁插入和删除,但在随机访问时性能较差。

刘炫320的博客 627

STM32中的指针

本文梳理了C/C++中指针的核心概念和使用方法。指针是保存内存地址的变量,包含自身地址和指向地址。文章详细解释了*p与p的区别、指针定义与解引用、底层存储原理及类型含义。同时介绍了空指针、指针数组等常见类型,以及指针在参数传递、动态内存分配和结构体访问中的实际应用,并总结了野指针、空指针解引用等常见错误。通过底层视角帮助读者更清晰地理解指针机制。

2504_92863595的博客 1220

Java数组与链表终极对决:底层原理、性能对比与实战选型!

数组是相同类型数据的有序集合,在内存中连续存储,通过**下标(索引)**访问。// 🟡 数组定义// 方式1// 方式2// 🟠 访问元素// O(1)// O(1)维度数组链表优势随机访问快、内存紧凑动态扩容、头/尾操作快劣势固定大小、中间插入删除慢随机访问慢、内存开销大适用场景频繁查询、固定/动态扩容小频繁头尾操作、大小动态变化Java推荐ArrayListLinkedList(但优先ArrayDeque核心记忆口诀🟡数组查改快(索引直接定位) + 🟠链表增删快(只改引用)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 306

C++链表详解:从零开始掌握链表结构,轻松应对算法面试

本文系统介绍了链表这一基础数据结构,重点分析了C++中链表的实现与应用。内容涵盖:1)链表与数组的核心对比;2)单向、双向和循环链表的实现方式;3)链表的基本操作(插入、删除、反转等)及时间复杂度分析;4)常见错误与优化技巧;5)面试高频考点和实际应用场景(如LRU缓存)。文章强调指针操作顺序、内存管理和边界条件等关键点,并提供了学习路线和推荐资源。链表作为算法面试的核心考点,需要结合实践才能真正掌握。

小庞的博客 9246

C语言中指针的魔法与奥秘

在 C 和 C++ 语言的世界里,指针是一把既强大又危险的双刃剑。它赋予了程序员直接操纵内存的能力,能够实现高效的数据处理和复杂的数据结构构建,但同时也因使用不当引发各种难以调试的错误。本文将从指针的基础概念出发,逐步深入到多级指针、复杂数据结构以及指针在函数参数传递中的应用,揭开指针的神秘面纱。

科技改变人类,技术成就未来 2万+

数据结构与算法 - 数组与链表的场景对比:遍历、查询、修改的选择依据

数组与链表的性能对比与选型指南 本文深入分析了数组与链表的核心差异,通过代码示例、性能测试和底层原理揭示二者的适用场景。关键结论: 遍历性能:数组凭借缓存局部性比链表快30倍以上(实测0.5ms vs 15ms) 查询操作 按索引:数组O(1)碾压链表的O(n) 按值:数组在有序时支持二分查找,无序时仍因缓存优势更快 修改操作 头插/头删:链表O(1)占优 尾部/中间操作:数组更优(System.arraycopy高度优化) 内存开销:链表节点存储开销是数组的6倍(24B vs 4B/元素) 实测数据:Ja

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

C/C++实践(六)C/C++语言指针与数组区别

本文详细对比了C语言中数组与指针在内存存储、声明初始化、操作符优先级、性能特征、使用场景等方面的差异。数组在内存中表现为连续存储块,元素大小相同,访问效率高;指针则是存储地址的变量,灵活性更强,但访问需要两次内存读取。数组适用于固定大小的数据集合和连续内存访问场景,而指针则更适合动态内存管理和非连续数据结构。文章还探讨了混合使用技巧、底层机制、工程实践建议及常见误区,强调在实际开发中应根据需求选择合适的数据表示方式,兼顾性能与代码可维护性。

致力于硬件设计、人工智能知识及技术的分享,不断鞭策自己成长,共同进步! 864
上一篇: win7下的c语言画图
下一篇: Android中图片缓存的一些总结
Hammer42
博客等级 码龄15年 19粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值