C/C++:数据结构(单链表)

Linked List编程题 输入文件的第一行有两个整数n,q,分别表示初始链表中元素个数和对链表操作的次数,第二行有 n个整数,表示初始链表的元素,保证这些数字不超过int表示的范围。 接下来q行,每行可能为如下两个操作之一: 1 a b表示在第a个元素后面插入值为b的元素, 2 a表示将链表中第a个元素删除,如果a大于当时链表长度,则忽略此操作 如: 输入 3 3 1 2 3 1 1 4 1 2 5 2 2 输出 ... 阅读详情

时代的一粒灰,落到个人头上,就是一座山。谁也没有想到2020的开头以新冠状病毒肺炎这只黑天鹅拉开序幕。

有人说“2019年可能会是过去十年里最差的一年,却是未来十年里最好的一年”。没想到预言竟然快成真了

2020年应届高校毕业生数量达874万人,同比增长40万人,创历史新高。其中很多将会进入到软件行业中。

经过多年的发展,现在编程技术不再高大上,入行门槛不再高。培训机构比比皆是,通过培训轻松月入过万,阶段性的实现了价值目标。大四学生不喜欢本专业,自己拿本书学习也能找到不错的公司以实习生的身份入门。00后从幼儿园开始学习编程软件,懂奥数不再厉害,会编程才是加分项,小学生会编软件操作机器人的比比皆是……

有人说:从前人人都是产品经理,如今人人都可以是程序员,程序员都被列入“十大高危行业”了,还有35岁清退论什么的……然而清退的永远不是年龄,而是思维和进取心。学习是永恒的主题,在技术日新月异发展的现在,作为IT工作者也必须时刻学习新的技术,时代淘汰是不打招呼的。

我太难了~

在这里插入图片描述
还记得当初的一次面试,和蔼的面试官然我手撸一个单链表并逆序?我一听,好熟悉的感觉,应该没什么问题,直接开撸。什么创建节点结构体,写创建方法,写逆序函数,没错,函数名称写的都很正确,然而实现的时候确愣住了~怎么就写的那么生涩呢。日常工作中都被语言的语法糖和相关的库给宠坏了啊,平时没事也没实现过啊……
归根到底还是没有对原理充分理解。

在此记录一下实现吧,也算是给自己温故一下吧

头文件linkList.h

#pragma once
#include <stdlib.h>
#include <iostream> 
using namespace std;

typedef struct Node {
 int data;
 Node *next;
}ListNode;

//创建链表
ListNode *createList(int n);
//打印链表
void printList(ListNode *head);
//链表插入,在第K位后面插入
ListNode * insert(ListNode *head, int k, int data);
//链表逆序
ListNode *resverse(ListNode *head);

实现linkList.cpp

#include "linkList.h"

//创建链表
ListNode *createList(int n) {
	ListNode *head = NULL;
	ListNode *curr = NULL;
	for (int i = 0; i < n; i++) {
		//创建一个节点
  		ListNode *p = new ListNode(); 
  		p->data = i;	
  		//设置头节点
  		if (curr == NULL) { 
   			curr = p;
   			head = curr;
  		}
  		//指针指向下一节点
  		else {	
   			curr->next = p;
   			curr = curr->next;
  		}
 	}	
 	//最后指向NULL
 	curr->next = NULL;
 	//返回头节点的指针
 	return head;
}

//链表遍历
void printList(ListNode *head) {	
	if (head == NULL) {
  		return;
 	}
 	ListNode *curr = head;
 	while (curr) {
  		cout << curr->data << endl;
  		curr = curr->next;
 	}
}

//链表插入,在第K位后面插入
ListNode * insert(ListNode *head, int k, int data) {
 	if (head == NULL) {
  		return NULL;
 	}
 	ListNode *curr = head;
 	ListNode *next = NULL;
 	int pos = 1;
 	while (curr) {
  		if (pos == k) {
  			ListNode *newNode = new ListNode();
   			newNode->data = data;
   			next = curr->next;
   			curr->next = newNode;
   			newNode->next = next;
   		}
  		pos++;
  		curr = curr->next;
 	}
  	return head;
}

//链表逆序
ListNode *resverse(ListNode *head) {
 	if (head == NULL) {
  		return NULL;
 	}
	ListNode *curr = head;
 	ListNode *pre = NULL;
 	ListNode *next = NULL;
 
 	while (curr) {
  		next = curr->next;
  		curr->next = pre;
  		pre = curr;
  		curr = next;
 	}
 	return pre;
}

int main(int argc, char *argv[]) {
	ListNode * p = createList(10);
 	printList(p);
 	
 	ListNode * r = resverse(p);
 	printList(r);
 	
 	ListNode * i = insert(r, 3, 11);
 	printList(i);
 	
 	getchar();
 	return 0;
}

数据结构(知识点碎片极速复习系列一) 四种逻辑结构类型:逻辑结构的二元组表示法:二元组表示法和图形表示法的转换(在树形结构的基础上画线性结构):同一逻辑结构可以对应多种存储结构。存储效率高,可对元素随机存取,但不便于数据修改。(C语言实现:int Array[7];)通过索引表按关键字查找速度快,但因增加索引表使存储空间较大。按关键字查找速度快,需要解决冲突,并非适合任何数据的存储。一个算法是由控制结构(顺序、分支和循环3种)和原操作构成的。假设算法的问题规模为n(固定说法),算法时间分析的就是求出算法所有操作的执行次数(也称频度),用T(n) 阅读详情

相关推荐

【2023王道数据结构】【线性表—page40—19】C、C++完整实现(可直接运行)

~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ 如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~ 题目: 设有一个带头结点的循环单链表,其结点值均为正整数,设计一个算法,反复找出单链表中结点值最小的结点并输出,然后将该结点从中删除,直到单链表空为止,再删除表头结点。 解题思路: >定义几个工作指针 >每次遍历找到最小值将其删除 >直到表为空 代码实现: #include <iostream> using namespac.

优快云 精品推荐 845

单链表反转

究竟要如何反转呢?我们不妨拿一个例子来说明一下算法。 看懂怎么反转的了吧? 代码如下: #include #include #include using namespace std; struct ListNode{ ListNode* next; int data; }; void Creat_LinkList(ListNode* &head) { head = new

Gongxs7的专栏 656

【2023王道数据结构】【线性表—page40—04】C、C++完整实现(可直接运行)

~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ 如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~ 题目: 试编写在带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值结点是唯一的)。 解题思路: >定义工作指针p、pre >定义用于保存最小值的指针minP、minPre >遍历链表找到最小值,用指针标记 >最后修改指针将其删除释放空间 代码实现: #include <iostream> using name.

优快云 精品推荐 722

C++之ListNode

单链表,弄清楚可stl中list的区别 ListNode的结构 struct ListNode { int val; //当前结点的值 ListNode *next; //指向下一个结点的指针 ListNode(int x) : val(x), next(NULL) {} //初始化当前结点值为x,指针为空 }; ...

weixin_38168322的博客 4565

睿思综述智能体:100篇高质量文献一键生成万字长文,还能联网PubMed,科研效率拉满!

对一个主题进行文献综述,是日常科研人绕不过去的工作,无论是写论文前言,综述论文,或者基金申请书的立项依据,需要根据主题,从海量文献中提取相关信息,梳理出清晰的逻辑线,再组织成流畅的文字。4 一键生成万字全文:大纲确认后,它会基于对所有论文的深度理解,逐个章节进行详细撰写,最终生成一篇逻辑连贯、内容翔实、引用规范的万字综述长文,并直接保存为Word(.docx)文件。3 智能撰写大纲:你可以提供自己的大纲,也可以让它根据所有文献内容,智能生成一个逻辑清晰的综述大纲,并支持你在此基础上修改。

dinaxuejie的博客 820

飞腾X100芯片GPU状态查询

本文档对在linux系统下查看X100芯片GPU状态信息进行说明,可以帮助大家了解芯片的实时工作状态。

乌拉大喵喵 2811

用单链表实现多项式乘法 c语言,单链表实现多项式的相乘-c语言

#include typedef struct node{float coef;//系数int exp; //指数struct node *next; //指针域}listnode;listnode *CreateList(int n);int printflist(listnode *head);int InverseList(listnode *head);listnode *Multi...

weixin_29745609的博客 570

基于Arduino UNO的OLED显示器使用方法x2(Arduino系列五)

Arduino使用OLED显示模块可以实现串口数据显示,还可以与其他模块联合使用,实现实时显示开发板实时数据。

LNN0212的博客 4170

c/c++ 数据结构 单链表

创建方法二:依然是头插法,但是在赋值时将数组最后一个元素赋值给第一个创建的节点(创建完后是最后一个),将数组倒数第二个元素赋值给第二个创建的节点(创建完后是倒数第二个节点),以此类推。单链表的销毁:从头节点开始依次往后释放各个节点的内存,剩最后一个节点时退出循环,再将其free();求单链表的长度:每循环一次count+1,直到p为最后一个节点,返回count。根据单链表的元素值求索引:当索引小于单链表长度且存在该元素才返回,否则返回-1。根据单链表的索引取值:索引有效才为真,否则为假。

2301_78564545的博客 854

从零部署DeepSeek V4 Flash:NVIDIA DGX Spark实战指南

GPU加速计算已成为现代人工智能基础设施的核心,其原理是通过并行处理架构大幅提升深度学习模型的训练与推理效率。在AI工程实践中,NVIDIA GPU凭借CUDA生态和专用驱动栈,为大规模语言模型部署提供了硬件基础。本文聚焦于企业级AI服务器部署场景,针对NVIDIA DGX Spark多节点系统的硬件初始化、驱动兼容性配置、容器化部署等关键环节,提供从系统层到应用层的完整解决方案。通过vLLM推理框架的实战配置,演示如何将DeepSeek V4 Flash模型高效部署于多GPU环境,涵盖Tensor Par

weixin_32296621的博客 373

CHI里的Error handling机制

本文讲解了CHI里的Error handling机制。

W1Z1Q的专栏 2498

数据结构01:单链表(C/C++语言)

数据结构01:单链表(C/C++语言))初始化单链表使用C语言结构体描述该单链表的基础结构初始化一个带头结点的单链表计算从某个结点p开始直到链表末尾的结点总数(包括此结点p)从某个结点P开始,打印N个结点的数据(如果只剩余M个,不够N个,则打印到末尾,即打印M个)单链表插入在指定节点p之后插入指定数据元素在指定节点p之后插入指定节点s在指定的链表的索引位置插入指定的数据元素(带头结点链表)在指定的链表结点p之前插入指定的新元素在指定的链表结点p之前插入指定的新结点s单链表删除删除结点P后面链接的第一个结点(

ALAN_CF的博客 936

【ESD专题】从原理上分析TVS管PCB Layout的经验法则

我们常常会听到的一些经验法则,按这些经验法则去做,一般也不会有什么问题,但是到底是为什么呢? 没有从原理上分析和证明的时候,往往在Layout之后还要担心实际测试结果怎么样。或是在实际测试出问题后,根本无法进行分析,难道说修改一个版本就好了?那要从哪里修改呢?也无从下手呀。...

一点硬件 1446

C/C++数据结构:【动图演示】 单链表的结构介绍与实现

链表是一种 物理存储结构上非连续、非顺序的存储结构,在数据存储与表示方面有着非常多的应用场景,属于C/C++数据结构基础,今天,我们通过动图来了解C/C++单链表的结构讲解与实现方法

weixin_43654363的博客 1700

FPGA/IC 秋招笔试/面试题总结(续)

FPGA/IC 秋招笔试/面试题总结(续)来啦… 文章目录二十七、状态机1. Moore/Mealy状态机2.一、二、三段式状态机 二十七、状态机 1. Moore/Mealy状态机 (1)Moore状态机: 输出只由当前状态决定,即次态=f(现态。输入),输出=f(现态) Moore型状态机的输出信号是直接由状态寄存器译码得到的。 Moore型状态机检测序列1101如下 Moore型状态机输出函数只由状态变量决定,想要输出Z=1,必须S4状态形成,即寄存器中的1101都打进去后才可以。输出Z=1会在

Crazzy_M的博客 2万+

JVM高频面试基本问题与知识点整理

JVM高频面试基本问题与知识点整理

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 87万+

数据结构二:单链表(C/C++实现)

采用C++的引用在修改指针的时候更方便,C中要修改指针的话就要用到指针的指针->二级指针。以上以上均为个人学习心得,如有错误,请不吝赐教~THE END。

qq_62078117的博客 226

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C/C++编程笔记:数据结构难点之单链表!一篇文章带你突破难点

数据结构之单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元 存放线性表中的数据元素 。链表中的数据是以结点来表示的,每个结点的构成:元素( 数据元素 的映象) + 指针 (指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 介绍:单链表就是结构体变量和结构体变量 通过指针成员连接在一起,故:单链表就是多个结构体变量。 链表分类 根据链表有无头结点,指针是是否双向,链表是否环状,我们把链表分为以下几种: 带头结点单链表。 无头结点单链表。 双

致力于C语言C++知识分享! 771

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数据结构笔记15:C/C++中创建(带头结点、不带头结点的)单链表(图解版)

1.尾插法建立带头结点的单链表 尾插法思想 尾插法的思想其实很简单,通俗来讲就是每创建一个新节点都插到原来链表的后面。 代码实现 Node *Head, *L, *LNew; /* 申请节点 */ Head = (Node *)malloc(sizeof(Node)); /* 带头结点 */ L = Head; L->next = NULL; /* 初始赋值 */ for(int ...

亦木的博客 2580

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

在单链表写入一组数据代码_C/C++编程笔记:数据结构难点之单链表!一篇文章带你突破难点...

数据结构之单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元 存放线性表中的数据元素 。链表中的数据是以结点来表示的,每个结点的构成:元素( 数据元素 的映象) + 指针 (指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。介绍:单链表就是结构体变量和结构体变量 通过指针成员连接在一起,故:单链表就是多个结构体变量。链表分类根据链表有无头结点,指针是是...

weixin_28339967的博客 267

【数据结构篇C++实现】- 线性表 - 顺序表和链表

线性表知识总结,一文搞懂什么是顺序表与链表,以及常见的操作

陈七的博客,学习知识分享,期待与大家的交流 4258

C++ HOJ 约瑟夫问题 的 数组、链表及STL实现

本文将介绍约瑟夫问题,并给出数组、循环链表以及STL的题解算法思想与源码实现。

稚枭天卓 3545

3. 单链表

本文介绍了单链表的基本概念与实现方法。单链表是一种非连续、非顺序的存储结构,通过指针链接实现逻辑顺序。每个结点包含数据域和指针域,结点在内存中独立申请,物理地址不一定连续。 文章详细实现了单链表的各项操作: 初始化链表(myLinkedListCreate) 获取指定位置元素(myLinkedListGet) 头插法(myLinkedListAddAtHead) 尾插法(myLinkedListAddAtTail) 指定位置插入(myLinkedListAddAtIndex) 删除指定位置节点(myLink

2402_88143778的博客 441

链表详解:定义、作用、应用场景及与数组的区别(C/C++ 实战)

本文介绍链表这一非连续线性数据结构,由节点(数据+指针)串联,支持动态内存管理,插入删除高效(O(1)),但随机访问需遍历(O(n))。与数组相比,数组随机访问快(O(1))但插入删除代价高(O(n))。常见应用:内存管理、哈希表冲突解决、LRU缓存、图邻接表等。提供C语言单链表实现(头插、尾插、删除、遍历)和C++双向链表手动实现及std::list用法。链表变体包括循环链表、带头节点链表、跳表。选择建议:频繁随机访问用数组,频繁插入删除且数据动态变化用链表,C++优先标准库容器。

2402_85743155的博客 531

2019年春季学期第十二周作业.

本周作业头: 这个作业属于哪个课程 C语言程序设计语言Ⅱ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/3236 我在这个课程的目标 指针进阶 这个作业在那个具体方面帮助我实现目标 如何使用指针和结构解决问题 参考文献 互联网和c语言程序设计教材 ...

weixin_30408739的博客 220

嵌入式——02 数据结构

数据结构。

weixin_41650829的博客 87
上一篇: Cocos2dx游戏教程(十五):“见缝插针”,愿你走出半生,归来仍是少年
下一篇: Cocos2dx游戏教程(十六):绘制图形,DrawNode扇形以及环形
胖胖的战士
博客等级 码龄18年 104粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值