链表

链表详解(单链表、双向链表、链表逆序) 单链表 想了解单链表的一些概念可以看我另一篇博客: 链表基础 单链表结构体定义 //单链表的结构定义 typedef struct LNode { int data; //data存放结点数据域 struct LNode *next; //指向后继结点的指针 }LNode; 单链表的建立 (1)定义单链表的数据结构; (2)读取数据; (3)生成新结点; (4)将数据存入结点的成员变量中; (5)将新结点连接到表头或表尾。 重复(2)~(5)直到输入结束。 //头插法建立单链表 void c 阅读详情

#include "stdio.h"
#include "malloc.h"
#define Maxsize 50
typedef int datatype;

typedef struct node
{
 datatype data;
 struct node *next;
}LinkList;

LinkList *InitList()
{
 LinkList *S;
 S=(LinkList *)malloc(sizeof(LinkList));
 printf("初使化链表!/n");
 if(!S)
 {
  printf("空间不足");
  return NULL;
 }else
 {
  S->next=NULL;
  return S;
 }
}

LinkList *createList(LinkList *head)
{
 int n,i;
 char tmp;
 LinkList *p;
 printf("请输入结点的个数:/n");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  printf("请输入%d个结点值",i);
  fflush(stdin);
  scanf("%d",&tmp);
  p=(LinkList *)malloc(sizeof(LinkList));
  p->data=tmp;
  p->next=head->next;//头插法
  head->next=p;
 }
 printf("/n");
 return head;
}

//统计总共输入了多少个元素
int nodeNum;
int ListLength(LinkList *head)
{ 

 while(head->next!=NULL)
 {
  head=head->next;
  nodeNum++;
 }
 return nodeNum;
}

//显示链表
void DisplayList(LinkList *head)
{
 int i;
 nodeNum=0;//节点统计数变0,便之从开始计数。
 if(head->next==NULL){
  printf("这是一个空链表");
 }else{
  for(i=ListLength(head);head->next!=NULL;i--)
  {
   //从头部取数据!
   head=head->next;//因为头结点是空值,所以要先把头结点去除后再输出!
   printf("第%d个元素是:",i);
   fflush(stdin);
   printf("%d",head->data);
   
   printf("/n");
  }
 }
}

LinkList *ListInsert(LinkList *head,datatype data,int i)
{
 LinkList *p;
 nodeNum=0;//节点统计数变0,便之从开始计数。
 if(ListLength(head)==Maxsize-1)
 {
  printf("链表已达最大!不可再插入!");
  return 0;
 }
 else
 {
  p=(LinkList *)malloc(sizeof(LinkList));
  p->data=data;
  p->next=head->next;
  head->next=p;
 }
 return head;
}

LinkList *ListDel(LinkList *head,int p)
{
 int i;
 LinkList *first,*second;
 first=head->next;
 second=head;
 nodeNum=0;
 if(p<0||p>ListLength(head))
 {
  printf("所要删除的位置不对,请重新选择位置!");
 }
 else
 {
  for(i=0;i<p;i++)
  {
   first=first->next;   //first指向当前节点
   second=second->next;   //second指向当前节点的前驱
  }
  second->next=first->next;
  free(first);
 }
 return head;
}

int main(){
 int num,point;
 LinkList *p;
 p=InitList();
 createList(p);
  
 printf("输出这个顺序表的值:/n");
 DisplayList(p);
 printf("/n");
 
 printf("请输入要插的数据!");
 scanf("%d",&num);
 printf("请输入要插的位置!");
 scanf("%d",&point);
 ListInsert(p,num,point);

 printf("输出插入一个数据后,这个顺序表的值:/n");
 DisplayList(p);
 printf("/n");

 printf("请选择你所要删除数据的位置!");
 scanf("%d",&point);
 ListDel(p,point);

 printf("输出删除一个数据后,这个顺序表的值:/n");
 DisplayList(p);
 printf("/n");

} 

C++实现单向链表,双向链表,单向环形链表,双向环形链表 本文讲解了链表的四种类型以及数据结构,同时给出了四种链表的C++代码实现。 阅读详情

相关推荐

什么是链表

文章目录 单向链表 双向链表 链表的概念 1、链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。 我们可以把链表类比成火车,每一列火车由若干个车厢组成,每个车厢就是一个Node结点,由多个Node结点组成的对象就是链表对象。火车的不同车厢之间都是通过挂钩连接的,当两个车厢之间脱钩之后,两个车厢就没有任何关系了。 1.单向链表 2.双向链表 代码如下...

m0_68990465的博客 2667

数据结构 —— java 单链表、双端链表、双向链表、无序链表、有序链表

文章目录链表不同链表的特点单链表(单端链表)双端链表双向链表 链表 上面是一个单链表的存储原理图,head为头节点,它不存放任何的数据,只是充当一个指向链表中真正存放数据的第一个节点的作用,而每个节点中都有一个next引用,指向下一个节点,就这样一节一节往下面记录,直到最后一个节点,其中的next指向null。 不同链表的特点 普通链表: 节点类保留下一节点的引用。链表类只保留头节点的引用,只能...

猎人在吃肉 4536

Anroid8.1 强制修改系统可以adb remount

在Android6.0 (Android M)user版本上,发现使用adb root后再adb remount系统之后会提示这样信息:remount of /system failed: Read-only file system,这是不能对system分区进行操作,提示没有写权限,为只读文件系统Read-only file system,因为系统本身在user就不支持可写操作,我们就不能adb push来调试apk,如果想调试apk就需要修改system、vendor权限问题。 如下现象: C:\Use

wq892373445的博客 1408

【Leetcode】反转链表 合并链表 相交链表 链表的回文结构

【Leetcode】反转链表 合并链表 相交链表 链表的回文结构

旋律 | 话语 | 色彩 | 情景 2382

SAP PP实战:MRP Area怎么用?手把手教你按产线、委外供应商拆分物料计划

本文详细解析了SAP PP模块中MRP Area的功能与应用,指导如何按产线、委外供应商拆分物料计划,实现精细化物料需求管理。通过实战案例展示MRP Area在减少计划冲突、提升库存准确率方面的显著效果,为制造业企业提供可落地的解决方案。

weixin_27015733的博客 432

uniapp自定义tabbar闪屏?3步搞定原生tabbar隐藏+自定义占位(附完整代码)

本文针对UniApp开发中自定义TabBar切换页面闪烁的痛点,提供了一套根治方案。通过隐藏原生TabBar并利用自定义组件进行视觉占位,巧妙结合原生切换的无闪烁优势与自定义设计的灵活性。文章详细解析了闪屏根源,并附上完整的page.json配置与代码实现,帮助开发者彻底解决此问题,提升小程序应用质感。

postgres8guard的博客 1530

LeetCode链表(链表操作,反转链表,奇偶链表,排序链表)

本篇文章更注重于链表自身的特点。链表是一种通过指针串联在一起的线性结构。链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表的入口节点称为链表的头结点也就是head。(1)单链表每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。(2)双链表每一个节点有两个指针域。

ji_meng的博客 1820

【翼型】基于Matlab的NACA翼型气动性能仿真与优化【附源码】

本文详细介绍了如何使用Matlab进行NACA翼型的气动性能仿真与优化。内容涵盖从生成NACA翼型坐标、利用面板法快速估算升阻力,到进阶的粘性流模拟与优化设计入门。通过清晰的代码示例和分步指南,帮助读者掌握基于Matlab的翼型分析与优化流程,为飞行器或叶片设计提供实用工具和方法。

weixin_29032489的博客 411

数据结构01- 单链表、双端链表、双向链表、无序链表、有序链表

数据结构01- 单链表、双端链表、双向链表、无序链表、有序链表 0、节点 节点 是数据结构中的基础,是 构成复杂数据结构的基本组成单位。 public class Node { public long data; public Node next; public Node(long value) { this.data = value; } } 1、链表的定义 链表: 通常由一连串 节点 组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向 上一个 或 下一个

琦彦 7075

《拉依达的嵌入式\驱动面试宝典》—Linux篇(八)_Linux驱动编程

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 319

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042 Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。

qq_51577576的博客 3228

详解链表oJ<反转链表,链表的中间节点及链表的回文>

链表OJ

qq_75270497的博客 1039

uniapp+renderJS+google map开发安卓版APP非小程序

uniapp+renderJS+google map开发安卓版APP非小程序,google map小叉号不显示,google map自定义marker右上角的小叉号如何去掉,uniapp+google map不显示

renkai721的专栏 667

链表小总结

/ 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)

m0_58257626的博客 1660

015:机载三维激光扫描技术相关知识

机载三维激光扫描系统(LiDAR)是集激光、GPS、INS等尖端技术于一体的三维航空遥感技术,能高效准确获取地表三维信息。该系统由GPS、INS、激光扫描测距系统、成像装置和工作平台组成,各部件协同工作以获取精确的空间定位、运动状态、地表三维坐标及真实色彩信息。通过制定飞行计划、安置GPS基站、激光扫描测量、惯性测量及获取高清数码影像等步骤,机载LiDAR技术能实时获取大范围高精度三维数据。该技术具有扫描速度快、精度高、全数字特征等优势,广泛应用于测绘、工程、环境监测和城市建设等领域,如城市三维模型重建、灾

qq_31762031的博客 1726

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

反转链表、旋转链表算法总结

1. 反转链表(力扣:206) 2. 反转链表 II(力扣:92) 3. 旋转链表(力扣:61)

卜大爷的博客 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

链表(单链表、双链表、单向环形链表)

Josephu问题为:设编号为1,2,...n的n个人围坐一圈,约定编号为k(1

weixin_52347460的博客 1173

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

链表 添加链表、搜索链表、删除链表

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; /* 利用可变数组的思想:Linked Block 当中不用copy value */ /* 可变数组的缺陷:1.新申请空间,然后往新空间赋值数据花费时间;2.数组增长时,可能遇见内存限制 */ /* 单向链表思想:指针-&gt;头节点(数据+指针)-&gt;节点(数据+指针)-&gt;节点(数据...

一叶知秋 3083

Python与链表(含链表概念、链表定义、链表操作、链表相关例题)

Python与链表、链表基础概念、链表与数组区别、链表分类、链表增删改查、链表相关例题

Bala_lala的博客 1402

数据结构之链表操作详解与示例(反转链表,合并链表,旋转链表,对链表排序)

本文介绍了链表的四种常见操作:反转链表、合并链表、旋转链表和对链表排序。每种操作都有其特定的应用场景和算法步骤,通过示例代码展示了如何实现这些操作。理解和掌握这些链表操作对于深入理解数据结构和算法至关重要。

qq_35320456的博客 1348

链表学习反转链表

链表是一种线性数据结构,其中元素不是连续存储在内存中的,而是通过指针连接起来。每个节点包含两部分:数据域和指向下一个节点的指针域。链表分为单向链表和双向链表,本文主要讨论单向链表的反转。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1247

MySQL中的free链表,flush链表,LRU链表

你在执行增删改的时候,如果发现数据页没缓存,那么必然会基于free链表找到一个空闲的缓存页,然后读取到缓存页里去,但是如果已经缓存了,那么下一次就必然会直接使用缓存页。反正不管怎么样,你要更新的数据页都会在Buffer Pool的缓存页里,供你在内存中直接执行增删改的操作。接着你肯定会去更新Buffer Pool的缓存页中的数据,此时一旦你更新了缓存页中的数据,那么缓存页里的数据和磁盘上的数据页里的数据,是不是就不一致了?这个时候,我们就说缓存页是脏数据,脏页。

weixin_55229531的博客 5万+

链表基础知识+移除链表元素+设计链表+反转链表

接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。这段代码定义了一个名为 `ListNode` 的类,它通常用于在Python中创建和操作链表。链表是一种线性数据结构,其中每个元素(通常称为节点)包含一个值和一个指向下一个节点的引用。

weixin_43710382的博客 1826

链表_逆序链表_合并链表

2.重复n次,逆序k长度的链表1.cur指向原链表中需要插入到新链表的结点2.prev进行头插时要用到的节点3.tmp记录下一次要插入位置的使用的结点(cur进入循环前的位置)(新链表的尾结点)从每条链表中取第一个元素(链表最小值),再从这些节点中选出一个最小的插入到新链表中。把s->next=nullptr断开链表后,新建head2新的空头节点,遍历右侧链表进行头插,完成逆序。我们可以再新建一个链表,进行尾插,第一次取左侧链表的结点,第二次取右侧链表节点,直到两个链表节点都取完。

wws7920的博客 1086
上一篇: 顺序表
下一篇: 如何配置IIS运行 ASPX
wangjun_pfc
博客等级 码龄20年 254粉丝 299原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值