链表的三种构造方法

数据结构进阶:链表、散列表与二叉排序树 本章节深入探讨了链表、散列表和二叉排序树这三种常见的数据结构。首先介绍了链表的头部和尾部节点插入与删除操作,接着讲述了循环链表的环状特性。随后,文章重点讲解了散列表的原理、散列函数构造方法及应用,以及二叉排序树的插入、删除、查找操作和Java实现。通过实际代码示例,为读者提供了一个关于数据结构操作的全面视角。 阅读详情
#include<stdio.h>
#include<malloc.h>
#define MAX 100000
typedef struct SLink
{
	int data;
	struct SLink *next;
}SNode;


/*前向插入法构造简单链表*/
SNode * CreateLinkA()
{
	int x;
	SNode *head,*p;
	//SNode *p;
	head=NULL;
	scanf("%d",&x);
	while(x!=0)
	{
		p=(SNode *)malloc(sizeof(SNode));
		p->data=x;
		p->next=head;
		head=p;
        scanf("%d",&x);
	}
	return head;
}

/*向后插入法构造单向加头链表*/
SNode * CreateLinkB()
{
  int x;
  SNode *head,*last,*p;
  head=last=(SNode *)malloc(sizeof(SNode));
  scanf("%d",&x);
while(x!=0)
	{
		p=(SNode *)malloc(sizeof(SNode));
		p->data=x;
		last->next=p;
		last=p;
        scanf("%d",&x);
	}
   last->next=NULL;
  return head;
}
/*有序插入法构造单向加头有序循环链表*/
SNode * CreateLinkC()
{
	int x;
	SNode *head,*f,*s,*p;
	head=(SNode *)malloc(sizeof(SNode)); //申请表头结点
	head->data=MAX;              //设置监督元
	head->next =head;    //构造空链表

   scanf("%d",&x);
  while(x!=0)
  {
	  p=(SNode *)malloc(sizeof(SNode));
	  p->data=x;
	  f=head;s=f->next ;//设置搜索指针初值

	  while(s->data<x)   //循环,查找x的有序位置
	  {
		  f=s;
		  s=s->next ;

	  }
	  /*将新结点x插入在f->和s->之间*/
     f->next =p;
	 p->next =s;  
	 scanf("%d",&x);
  }
  return head;
}
void OutPut(SNode * head)
{   
	SNode * p=head;
	while(p->next!=NULL)
	{
		printf("%d->",p->data);
		p=p->next;
	}
	printf("%d",p->data);
}
void main()
{   
	printf("开始创建链表......\n");
	SNode *head=CreateLinkC();
	printf("开始输出链表......\n");
	OutPut(head->next);

	
}

不带头结点的链表反转:

void Invert(SNode *&head)
{
	SNode *p,*q,*r;
	p=head;
	q=p->next ;
	while(q!=NULL)
	{
    r=q->next ;
	q->next =p;
	p=q;
	q=r;
	}
	head->next =NULL;  //将第一个结点的next赋值为NULL
	head=p;  //将P改为头结点
	
}


CreateLinkC()的最坏情况和平均情况的时间复杂度都是O(n^2),其他两个构造函数的时间

复杂度为O(n),n为所构造链表的长度。。。。。

Synology File Station 官方 API 指南总结(中文版) 本文总结了Synology File Station官方API指南的核心内容,详细介绍了如何通过HTTP/HTTPS请求与DSM系统交互实现文件管理功能。主要内容包括: 基础API操作流程:从获取API信息、登录认证到执行请求和登出的完整工作流 请求构造与响应解析:JSON格式的请求参数处理和响应结果分析 关键API功能分类: 文件信息获取(List/Info) 文件搜索(Search) 收藏夹管理(Favorite) 缩略图生成(Thumb) 目录大小计算(DirSize) 文件上传(Upload)等 错 阅读详情

相关推荐

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇 文章目录Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇前言一、数据库的安装前准备,前提是没有安装过!!!二、仅安装数据库软件(数据库运行环境)三、添加数据库实例四、设置监听程序,让数据库可以通过网络访问五、为目标数据库设置网名总结 前言 如果需要安装包:联系我看到会给你链接,因为现在官网已经不提供10g,11g的安装包了,在网盘保存望悉知(回复不会很及时,下班看到会回复敬请谅解)。 提示:以下

zhx__的博客 5630

c++链表构造函数

c++的链表结构是基于结构体创建的,下面结构来存放每个节点 struct ListNode { double value; ListNode *next; }; 在已经声明了一个数据类型来表示结点之后,即可定义一个初始为空的链表,方法是定义一个用作链表头的指针并将其初始化为 nullptr,示例如下: ListNode *head = nullptr; 现在可以创建一个链表,其中包含一个结点,存储值为 12.5,如下所示: head = new ListNode; //分配新结点 hea

qq_45797026的博客 7512

思科模拟器实战:MQTT协议实现物联网设备通信全流程解析

本文详细解析了如何在思科模拟器中利用MQTT协议实现物联网设备通信的全流程。通过搭建网络拓扑、配置MQTT Broker与客户端,并编写发布/订阅逻辑,手把手指导读者完成一个“开关控制电灯”的经典物联网场景实验,帮助零成本掌握物联网通信核心。

weixin_29294975的博客 381

算法学习——链表

int data;ListNode(int val) : data(val) , next(NULL) //节点的构造函数 {} };定义构造函数是为了方便我们创建节点的时候能够直接给节点初始化。如果我们不定义构造函数,使用编译器默认生成的构造函数,需要这两行代码。我们首先需要掌握链表的增删改查等基本操作。其次,为了对链表进行方便的操作,我们一般使用虚拟头结点。反转链表是高频题目,主要有迭代法和递归法。在删除倒数N个节点的题目中,使用了双指针法。最后的环形链表主要是数学证明。

qq_24867003的博客 348

程序化广告ADX系统架构设计与实现

摘要: 本文详细介绍了程序化广告交易平台(ADX)的系统架构设计与实现。ADX作为连接广告主与媒体的核心平台,采用基于腾讯云和阿里云的微服务架构,包含网络基础设施、负载均衡、消息处理、核心业务服务和多级数据存储等层次。重点解析了Kafka消息队列处理高并发广告请求、Redis实时统计关键指标等核心技术实现,并提供了Java代码示例展示广告请求处理、竞价流程等核心功能。该系统通过分层设计和分布式组件,实现了高性能、高可用的程序化广告交易能力。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 764

30天入门 SAP BTP 开发系列之四:SAP BTP 控制台里 Global Account 的常规操作介绍

笔者前一篇文章,介绍了 SAP BTP 中 Global Account 的概念。本文咱们一起来看看 SAP BTP 控制台里,给 Global Account 开放了哪些操作功能。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 865

链表基础知识

目录 1、单链表 2、双链表 3、循环链表 4、删除节点 5、添加节点 6、链表定义 1、单链表 单链表是多个节点通过指针串联起来的线性结构,每个节点分为两部分,一个是数据域,一个为指针域,最后一个节点的指针域胃为空 (1)数据域:存放数据; (2)指针域:指向下一个节点的指针。 2、双链表 双链表中每一个节点有两个指针域,一个指针域指向上一个节点,一个指针域指向下一个节点,可以查询前也可以查询后。如下图: 3、循环链表 循环链表就是链表的首....

weixin_50616848的博客 1328

在 Eclipse 中接入 DeepSeek:开启 Java 开发新效率

DeepSeek 能够根据自然语言描述,精准生成高质量的 Java 代码片段。无论是简单的方法编写,比如 “编写一个 Java 方法,用于计算两个整数的乘积”,还是复杂的类和功能模块创建,例如 “创建一个 Java 类,实现文件的读写操作,并包含异常处理机制”,它都能快速给出合理且可运行的代码示例。DeepSeek 生成的代码不仅实现了基本功能,还遵循 Java 的编码规范,添加了必要的注释,让代码更易于理解和维护,大大节省了开发者从头编写代码的时间和精力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4066

C++ list容器-52-链表基本概念和构造函数/赋值

前面学习的容器或叫数据结构都是连续存储的空间。例如数组和vector都是在一块连续的内存空间去存储数据。既然有连续存储当然也就有非连续存储。这里开始学习非连续存储的数据结构,list,也叫链表 1.list的基本概念 list是一种将数据进行链式存储的数据结构,也叫链表。list是一种物理存储单元上非连续的存储结构,将数据元素的逻辑顺序是通过链表中的指针链接实现的。 链表的组成:链表由一系列结点组成。 结点的组成:一个存储数据元素的数据域,另一个是存储下一个结点地址的指针域 链表有单链表和双.

Anthony_tester的博客 1288

Jetson系列目标检测及推流

使用硬件编码,gstreamer推rtsp流至平台

xiao__run的博客 2710

Python爬虫:爬取拼多多平台商品信息、销量、价格等数据

在本篇博客中,我们将深入探讨如何使用Python爬虫技术爬取拼多多平台的商品信息,包括商品的标题、销量、价格等详细数据。拼多多的商品页面通常是分页展示的,因此我们需要遍历多个页面,获取所有商品的信息。每个商品在拼多多平台上都有一个唯一的商品ID,我们可以通过该ID访问商品页面。通过以上的技术方案和代码示例,你已经掌握了如何使用Python爬虫获取拼多多平台上的商品信息、销量、价格等数据。等技术,解决拼多多平台的反爬虫机制,成功抓取我们所需的商品数据。,我们能够应对拼多多的反爬虫机制,稳定地获取到商品数据。

2201_76125261的博客 3655

链表(数据结构,基本函数实现)

一个节点我们就这样设计。我们这样做就可以让空间相连:注意最后一个节点指向的指针一定是空,这样才可以保证让链表正常结束不会指向错误的空间。经过上面所总结的内容我们可以得出链表的结构体。

2301_79697326的博客 1248

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

链表的几种构造方法

链表的一些常用功能,两种构造方法和反转链表方法

小黑霸气 的专栏 1092

IEM模型,地表粗糙度模拟

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java数据结构链表(LinkedList详解)

Java数据结构链表部分和顺序表有所相似:首先都扩展了接口List,List里面的方法都会在LinkedList中重写。其次都可以实现数据的增删查改等基础功能。当然ArrayList相较于LinkedList有一定的缺陷,比如果在中间位置插入数据,在中间位置删除数据都比较麻烦,需要移动大量数据!LinkedList可以有效地解决移动数据的难题。当然LinkedList也有自我的缺陷(在C语言阶段已经详细研究,大家可以翻看之前的博客),接下来就一起用Java的目光探究LinkedList。

多敲代码防脱发的博客 1343

链表

【代码】链表。

weixin_54635367的博客 289

java 单链表反转

链接:https://www.jianshu.com/p/d201e6a00e3f .准备链表 准备一个由DataNode组成的单向链表,DataNode如下: public class DataNode { private int data; private DataNode next; public int getData() { ...

weixin_30617737的博客 132

【数据结构】链表---移除链表元素

删除链表中等于给定值 val 的所有节点 示例: 输入: 1->3->5->7, val = 3 输出: 1->5->7 代码: 建立一个 Node 类,val 代表目标值,next代表链表中结点的下一个指向 class Node { int val; Node next; // 如果 next == null 表示是最后一个结点 Node(int val)...

qq_44768644的博客 339

数据结构——链表与LinkedList

线性表的链式存储结构称为链表。在链表中的每个结点不仅包含有元素本身的信息(称之为数据成员),而且包含有元素之间逻辑关系的信息,即一个结点中包含有后继结点的地址信息或者前驱结点的地址信息,称为指针成员,这样可以通过一个结点的指针成员方便地找到后继结点或者前驱结点。LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。

xiepinan的博客 459

JAVA --ArrayList与LinkedList

ArrayList和LinkedList的特点,两个之间的区别。

m0_74993557的博客 1429

2:ArrayList

1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: (1) 动态的增加和减少元素 (2) 实现了ICollection和IList接口 (3) 灵活的设置数组的大小 大家知道,数组是静态的,数组被初始化之后,数组长度就不能再改变了。ArrayList是可以动态改变大小的。那么,什么时候使用Array(...

qq_963157144的博客 203

数据结构复习——LinkList与链表

本文介绍了Java中的LinkedList数据结构,它是一种基于双向链表的实现,具有物理存储非连续的特点。文章详细讲解了LinkedList的构造方法、常用操作(如添加、删除、获取元素等)以及三种遍历方式(foreach、正向迭代器、反向迭代器)。通过与ArrayList对比,分析了二者在存储结构、访问效率、插入删除性能等方面的差异,指出LinkedList更适合频繁插入删除的场景,而ArrayList则更擅长随机访问。最后总结了两种数据结构各自的应用场景。

2301_80141533的博客 352

JavaSE——集合9:Map接口实现类—HashMap(重要!!!)

JavaSE——集合9:Map接口实现类—HashMap(重要!!!)

雷神乐乐的博客 1548

Java 之 LinkedList 集合

一、概述   java.util.LinkedList 集合数据存储的结构是链表结构。   特点:增删快,查询慢   LinkedList 是一个双向链表,如下图      注意:该集合实现不是同步的,多线程的,速度快,效率高。   扩展:LinkedList 集合也作为堆栈,队列的结构使用。 二、常用方法   1、构造方法 LinkedList<E&gt...

a804847944的博客 96

Java集合系列 LinkedList底层源码 万字细致解读(超通俗易懂)

Java中LinkedList是一个双向链表实现的集合类,它其中每一个元素都是一个节点,每个节点都包含一个数据元素和一个指向下一个节点的引用,因此LinkedList的元素是通过节点之间的链接来组织的。

weixin_45663027的博客 173

LinkedBlockingQueue队列

文章目录概述 概述

Tiger的博客 984

hashmap获取value数据类型_面试必问的HashMap,你真的了解吗?

前言HashMap是Map中最为常用的一种,面试中也经常会被问到相关的问题。由于HashMap数据结构较为复杂,回答相关问题的时候往往不尽人意,尤其是在JDK1.8之后,又引入了红黑树结构,其数据结构变的更加复杂,本文就JDK1.8源码为例,对HashMap进行分析;源码分析1. 构造方法public HashMap(int initialCapacity, float loadFactor) {...

weixin_36357157的博客 618
上一篇: Spine.js vs Backbone.js
下一篇: 【排序算法】合并排序超级总结
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值