单向链表实现源代码

Swift Package Manager (SPM) 创建并集成本地库 Swift Package Manager (SPM) 在macOS 项目中创建并集成的完整步骤 阅读详情

下面是我实现的一个简单的链表,回顾了以往的知识点,不足之处,敬请提出宝贵意见,共同进步!!!

 

#include <iostream>
using namespace std;

//0、链表结构

struct MyLinkData
{
 int RoleID;
 MyLinkData *next;
};

typedef struct MyLinkData LinkStruct;

typedef LinkStruct* pLink;

//1、生成链表

pLink CreateLink()
{
 pLink pHead, pMiddle, pTail;//头结点、中间结点、尾结点
 int Volue;
 cout << "请您随便输入一个数值,输入0意味终止..." << endl;
 cin >> Volue;

 pHead = new(LinkStruct);

 if (pHead == NULL)
 {
  cout << "分配头结点内存失败" << endl;
 }

 if (Volue == 0)
 {
  pHead->RoleID = Volue;
  pTail = pHead;
  pTail->next = NULL;

  return pHead;
 }
 else
 {
  
  pHead->RoleID = Volue;
  pTail = pHead;

  cout << "请您继续输入自然值,输入0意味结束..." << endl;
  cin >> Volue;

  while (Volue)
  {
   pMiddle = new(LinkStruct);

   if (pMiddle == NULL)
   {
    cout << "分配中间结点失败..." << endl;
    pTail->next = NULL;
    return pHead;
   }
   else
   {
    pMiddle->RoleID = Volue;
    pMiddle->next = NULL;
    pTail->next = pMiddle;
    pTail = pMiddle;
    cout << "请您继续输入...,以0结束输入..." << endl;
    cin >> Volue;
   }
  }

  //pTail->RoleID = 0;
  pTail->next = NULL;
  return pHead;
 }
}

//2、输出链表

void printCout(pLink pHead)
{
 pLink pointer;

 cout << endl;
 cout << endl;
 cout << endl;
 cout << "输出整个链表的数值:" << endl;
 cout << endl;
 cout << endl;
 cout << endl;

 while (pHead != NULL)
 {
  pointer = pHead;
  pHead = pHead->next;

  cout << pointer->RoleID << endl;
 }

 cout << "链表输出完毕,退出该函数..." << endl;
}

//3、链表的释放

void FreeLink(pLink pHead)
{
 pLink pointer;

 while (pHead)
 {
  pointer = pHead;
  pHead = pHead->next;

  free(pointer);
 }

 cout << "释放链表成功!!!" << endl;
}

//4、查找链表
void CheckLink(pLink pHead,int Volude)
{
 pLink pointer;

 while(pHead != NULL)
 {
  pointer = pHead;
  pHead = pHead->next;

  if (pointer->RoleID == Volude)
  {
   cout << "***在链表中存有该数据***" << endl;
   break;
  }
 }

  getchar();
}

//5、修改链表数据值
void ReplaceLinkKey(pLink pHead, int Volude, int TrueVolue)
{
 pLink pointer;

 while(pHead != NULL)
 {
  pointer = pHead;
  pHead = pHead->next;

  if (pointer->RoleID == Volude)
  {
   pointer->RoleID = TrueVolue;
   cout << "替换数据成功!!!" << endl;
  }
 }
}

//6、链表的插入
pLink InsertLink(pLink pHead ,int Volue)
{
 cout << "演示链表的插入操作..." << endl;
 pLink pTail,pMiddle,pTemp;
 int _Volue;
 //pTail = pHead;
 pTemp = pHead;
 while (pHead != NULL)
 { 
  pTail = pHead;
  
  //(1)头结点的插入
  if (NULL == pHead->next)
  {
   pMiddle = new(LinkStruct);
   if (pMiddle == NULL)
   {
    cout << "申请存储单元失败..." << endl;
    break;
   }
   else
   {
    cout << "请您输入要插入的数据:" << endl;
    cin>>_Volue;
    pMiddle->RoleID = _Volue;
    pMiddle->next = pHead;
    pHead = pMiddle;
    return pHead;
   }
  }

  //(2)中间结点的插入
  if (pTail->RoleID == Volue)
  {
   pMiddle = new (LinkStruct);

   if (pMiddle == NULL)
   {
    cout << "申请存储单元失败..." << endl;
    return pHead;
   }
   else
   {
    cout << "请您插入要插入的数值:" << endl;
    cin >> _Volue;
    pMiddle->RoleID = _Volue;

    pMiddle->next = pTail->next;
    pTail->next = pMiddle;
    return pTemp;
   }
  }

  pHead = pHead->next;
 }
}

//7、链表的删除
pLink DelLink(pLink pHead, int Volue)
{
 pLink pointer,pTempfirst,pTemp;
 
 pTempfirst = pHead;

 while (pHead != NULL)
 {
  pointer = pHead;
  
  //(1)删除头结点

  if (pTempfirst->RoleID == Volue)
  {
   // a、只有前驱,没有后继
   if (pTempfirst->next == NULL)
   {
    free(pTempfirst);
    pTempfirst = NULL;
    return pTempfirst;
   }
   // b、有后继
   else
   {
    pHead = pTempfirst->next;
    free(pTempfirst);
    return pHead;
   }
  }

  //(2)删除其他结点
  if (pointer->RoleID == Volue)
  {
   pTemp->next = pointer->next;
   free(pointer);
   cout << "删除指定结点成功~~~" << endl;
   return pTempfirst;
  }
  pTemp = pHead;
  pHead = pHead->next;
 }

 return pTempfirst;
}


int main()
{
 pLink pHead,pMiddle;
 pHead = CreateLink();
 printCout(pHead);
 //CheckLink(pHead,200);

 //ReplaceLinkKey(pHead,2,200);
 //printCout(pHead);

 /*pHead = InsertLink(pHead,3);
 printCout(pHead);*/
 cout << "---------------------------------------------------------" << endl;
 pHead = DelLink(pHead,2);
 printCout(pHead);
 getchar();
 FreeLink(pHead);
 getchar();
 return 0;
}

SAP 交货成本(运费) 交货成本: 业务场景: 有些产品或供应商,会产生交货成本(运费、关税等) 业务模拟(以运费为例): 1、运费在采购订单体现:计划运费 ME21N创建采购订单,并且包含运费: MIGO收货时: 由上可知,MIGO时运费最终体现在库存(存货)科目中(V),或者价格差异中(S计价时)。 MIRO发票校验: 运费最终体现在单独科目中: 后台配置: 运费在发票时候... 阅读详情

相关推荐

强化学习:Distributed PPO (DPPO) 学习笔记

DPPO = Distributed + Proximal Policy Optimization Distributed:多个智能体并行训练 Proximal:限制策略更新幅度,确保稳定性 Policy Optimization:基于策略梯度的优化方法 核心思想:多个智能体并行探索环境,共享经验,通过裁剪策略更新确保训练稳定

只是个人学习笔记 1330

数据结构单链表附完整代码----单链表的基本操作

数据结构实验单链表

2201_75867204的博客 343

用户存续期价值评估CLV(二) BG/NBD Model python模拟

BG/NBD Model …继续 想象每一个客户有两个硬币,一个“Buy Coin"控制客户购买的概率;一个"Die Coin"控制客户流失、不再购买的概率。 前面假设了客户的交易次数服从泊松过程: 在一年中的每个月,客户都以抛硬币的方式来决定是否购买。我们所观察到的购买次数取决与泊松分布的参数 ????。 %matplotlib inline import numpy as np impor...

weixin_43171270的博客 3419

【数据结构】单链表完整代码实现

数据结构中单链表的完整代码实现。

飞舞的蓝色雪花 5001

MyEclipse 2017 CI 10安装与激活

本文介绍MyEclipse 2017 CI 7、CI 8、CI 9和CI 10的安装与激活。此方法理论上应该能激活MyEclipse 2017 CI所有系列,即激活方法是通用的,只是激活文件略有不同。本文提供MyEclipse 2017 CI 7、CI 8、CI 9和CI 10的激活文件。说明:博主所提供的压缩包格式均为RAR5,即WinRAR 5.0以上的版本才能正常解压,别的压缩软件博主不太清...

weixin_42539046的博客 9416

腾讯云智后台开发实习面试全纪录(已offer)

腾讯云智后台开发实习面经

wenwenaier的博客 5903

单链表完整操作集(完整源代码)

为了解决一个单片机项目的需求,解决频繁地跳转到某地址执行指令的问题,需要使用并维护一个序列 刚开始实在想不出办法,查了很多资料,也都用不上,后来知道链表结构的存在才解决了这个问题,花了一天半的时间从无到有接触单链表,记录一下基本操作集合,其中大部分都可以用来解决我单片机项目的问题 操作集 class LNode { public: int data; LNode *next; pu...

weixin_44587168的博客 1032

【异常】DeepSeek API HTTP 401 认证失败错误完整排查与解决方案

摘要:本文针对DeepSeek API开发中的HTTP 401认证失败错误进行深度解析,指出该错误属于不可重试的认证类问题。文章首先拆解错误日志关键字段,区分401与其他API错误的本质差异。随后提供优先级排序的全链路解决方案:1)检查API密钥有效性;2)规范请求头认证格式;3)排查账户权限状态;4)验证请求环境配置。最后建议通过新建测试密钥、使用官方示例代码或联系技术支持进行兜底处理。全文采用技术脱敏处理,为开发者提供系统性的401错误排查指南。(149字)

奶爸的编程之路,也就一周冷个三天 1521

单链表的实现代码

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <time.h> // 定义 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; typedef int ElemType; // 定义结点结构 typedef struct Node {

m0_51469347的博客 1379

FH8626V100之开发环境搭建

FH8626V100是富瀚微出的一款带摄像头的方案,开发工具在Linux 上进行。版本 Ubuntu 20.04 64位。

xue_nuo的博客 1万+

零差云控 ZeroErr eRob 电机 CAN、CANopen、EtherCAT、ROS2 机器人开发详细教程

TwinCAT 3(Windows 控制与自动化技术)是 Beckhoff 提供的开发平台,可将任何兼容 PC 转变为实时控制系统,用于管理各种类型的工业自动化系统,如 PLC(可编程逻辑控制器)、运动控制、机器人等。

机器人控制与仿真应用 1万+

单链表中的基本操作(详细代码图解+注释+算法步骤)

单链表中的基本操作(详细代码图解+注释+算法步骤)

Xiao_Ya__的博客 1万+

【软件系统架构】系列十一:面向对象技术—sysML

摘要: SysML(系统建模语言)是UML的扩展,专为复杂系统工程设计,支持硬件、软件、人员等跨领域建模。其核心包括9种图:4种结构图(如块定义图BDD、内部块图IBD)、4种行为图(如活动图AD、序列图SD)和需求图(REQ),覆盖需求、结构、行为及参数约束。相比UML(面向软件),SysML精简图表(9 vs 13),强化需求追踪与性能分析(如参数图PD),并支持MBSE(基于模型的系统工程)。需求关系(如满足、验证、派生)在需求图中明确关联设计实现,形成闭环管理。SysML是UML的子集与系统工程扩展

moton2017的博客 1904

新手 —— 单向链表的实现(含源代码)

目录 写链表之前的感想: 总结是什么: 怎么写单向链表: 链表的根本 函数的实现 单向链表的逻辑思路 源代码 写链表之前的感想: 写链表的意义: 因为后期学习到c++之类的都有自己写好的容器(包含链表),比自己写的好太多了,因此觉得没必要自己花时间熟练链表的编写。但是逐渐了解了自己想法的错误。 第一个意义,觉得是自己当前写链表的主要原因,因为身边同学大四找工作,公司招...

lushi1314的博客 370

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...

老版QQ原生表情gif动态

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

图解单向链表原理以及JS实现链表的方法【附源代码】

链表是我们在编程中重要的数据结构,由于它本身的数据特性,我们在开发中会频繁大量的使用链表。那么什么是链表呢?今天我们以单向链表为例子用图片来介绍一下什么是链表。 根据图片我们可以看出来链表的形态就是一条链子的形状,单向链表是在每一个节点中记录它下一个节点的内存地址来进行数据索引的,所以链表是逻辑上的一条链路,在实际内存空间上存储状态可能是这样的。 我们可以将内存理解为一个矩阵阵列,在每一个格子可以存储一些数据,每一个格子有自己相应的地址来访问这个数据,所以我们使用链表的主要用途就是将

keader01的博客 494

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java数据结构——单向链表

单向链表是链表中的一种,它由多个节点组成,每个节点都由一个数据域和一个指针域组成,数据域用来存储数据,指针域用来指向其后继节点。链表的头节点的数据域不存储数据,指针域指向第一个真正存储数据的节点。1、在一个链表中,头指针的作用就像是一张地图上的起点标示,它帮助我们知道链表的起始位置在哪里。2、头指针总是指向链表的第一个节点(即首节点)。通过这个指针,我们可以访问链表中的所有元素。

2303_81366403的博客 885

IEM模型,地表粗糙度模拟

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

单向链表实现源码

单向链表实现源码public class LinkList<T>{//定义一个内部类Node,Node实例代表链表的节点private class Node{//保存节点的数据private T data;//指向下个节点的引用private Node next;//无参数的构造器public Node(){}//初始化全部属性的构造器public Node(T data , Node...

weixin_30656145的博客 92

单向链表在C语言上的实现

作为几乎是初学C语言的人,在指针的问题还没有完全搞明白的时候,就看到了数据结构里面链表这样一个庞然大物,完全不懂的怎么操作。在阅读了多方资料后,终于根据自己的理解,写出了第一个单向链表程序,放在此处与大家分享,也让自己在复习的时候可以再回顾一下。程序实现了链表的创建、添加单个元素、删除单个元素的功能;对象为单个int型,即程序中的data。因为都是用的函数,所以如果要添加其他的操作,只需要写另外的...

go_sann 2656

单向链表

单向链表 该程序实现了单向链表的增、删、查。 头文件: #ifndef __SLIST_H__ #define __SLIST_H__ #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;assert.h&gt; typedef int DataType; typedef struct SList { ...

iconm的博客 416

用C语言建单向链表

Let life be beautiful like summer flowers and death like autumn leaves。生如夏花之灿烂,死如秋叶之静美。 链表是和数据结构相挂钩的,现在可以先认识一下哦,不一定非要弄懂,但是弄懂也没毛病。学习链表之前要把结构体弄懂哦,还有指针等。基础是一定要打牢的,不然以后学数据结构会很困难的。 任务描述 建立一个带头结点的单向链表。 相关知识 什么是链表?链表和二叉树是C语言数据结构的基础和核心。 链表有多种形式,它可以是单链接的或者双链接的,可以是已

m0_46259251的博客 731

python 链表_python实现单向链表数据结构

顺序表和链表作为线性表的典型结构,上一篇已经说了顺序表在python中的典型应用:list和tuple,《顺序表数据结构在python中的应用》,今天来实现链表的基本结构之一:单向链表。单向链表模型:链表是一个个节点连接而成,节点由两部分构成:元素域、链接域;链接域链接下一个节点,从而构成一条链条,而python主要实现单个节点对象,从而构成链条。python实现一个节点对象:class Node...

weixin_39725118的博客 92

利用头插法创建一个单向链表以及链表的逆置

#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #define N 10 //定义结构体单元 typedef struct node{ int data;//结构体数据域 struct node* next;//结构体指针域 }ElemSN; //逆向创建单向链表(头插法) ElemSN *PreCreatLink(int a[],i...

qq_39241239的博客 849

C++中实现一个简单的单向链表

最近在linux了一个简单的单向链表,直接上代码 链表头文件   list.h #ifndef _LIST_H_ #define _LIST_H_ typedef int T; template class List { private:     struct Node     {         T      data;         Node*  next;

u011641755的博客 3474

单向链表基本操作(C语言实现)

最近学数据结构的链表,就把单向链表的基本操作列了出来,包括链表的建立,链表的插入和删除,链表的查询和遍历,链表的销毁,链表的排序与逆序,链表的合成。 1.链表的建立 一般有两种方式建立链表,头插法和尾插法。 使用头插法建立的链表步骤少,但输出顺序和输入的相反,而尾插法建立链表多了一个不存在数据域的头节点和尾节点,但是输出是正序的,而且头节点便于我们的其余操作,所以我们一般用尾插法建链表。

l-jobs的专栏 1856

【数据结构】数据结构的诱惑之链表的秘密(一)

数据结构单链表

纤手破新橙的博客 126

【8557】建立两个非递减有序单向链表,然后合并成一个非递增链表

建立两个非递减有序单向链表,然后合并成一个非递增链表 #include<iostream> #define RESULT int #define OK 1 #define ERROR 0 using namespace std; typedef struct Node { int data; Node* next; }LNode, * LinkList; RES...

Codes 1577
上一篇: C++ Program3 读书笔记第一章
下一篇: 循环链表源代码实现
LJDirectxProgram
博客等级 码龄16年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值