c++单链表的基本操作

C++实现单链表的基本操作 C++实现单链表的基本操作 包含了单链表的创建、插入、删除、排序、输出等功能。 //C++实现单链表的基本操作 #include<iostream> #include<algorithm> using namespace std; #define ERROR 1; typedef int ElemType; typedef int Status; //定义单链表中每个节点... 阅读详情

#include<iostream>

#include<stdlib.h>

#include<stdio.h>

using namespace std;

typedef struct node{

    int value;

    struct  node* next;

}Node;

typedef struct{

   Node* head;

   Node*  tail;

   int size;

}LinkedList;

LinkedList* NewLinkedLIst(){

        LinkedList* tList=new LinkedLIst;//!!!LinkedList* tList=0;记住无论什么类型空指针都好,都不配拥有任何属性

       /*tList->head=0;
tList->tail=0;如果是这样的话不好插入*/

        tList->head=new Node;//!!!!0->next=0是大错特错的

        tList->head->next=0;

        tList->tail=tList->head;//方便尾插法

        tList->size=0;

        return tList;

}

bool BubbleSortList(LinkedList*& list){

       Node* p=list->head->next;

      if(0==p)return false;

      if(0==p->next)return true;

      Node*  tag=0;

      for(;p->next;p=p->next){//n-1次冒泡 

               for(Node* q=p->next;q;q=q->next){

                        if(tag->value>q->value)tag=q;

              }

              if(tag==p)continue;

              int tmp=p->value;

              p->value=tag->value;

              tag->value=tmp;

     }

      return false;

}

void Combine(LinkedList list1,LinkedList list2){

       Node* p=list1->tail;

       Node* q=list2->head->next;

       p->next=q;

}

bool Reverse(LinkedList*& list){//传递指针的引用过来是为了控制这个指针

          if(0==list->head->next)return false;

          if(0==list->head->next->next)return true;

          Node* pre=list->head->next;

          Node* mid=list->head-next->next;

          Node* pro=mid->next;

          while(mid){

                mid->next=pre;

                pre=mid;

                mid=pro;

                if(pro)

                          pro=pro->next;

        }

        list->head->next->next=0;

        list->tail=list->head->next;

        list->head->next=pre;

         return true;

}

bool Remove(LinkedList*& list,int value){

    if(0==list->size)goto END;//转向语句不允许跳同层含初始化区域

        {//加了一层无意义的花括号以便使goto能编译过去 

                Node*p=list->head;

                Node*q=list->head->next;

                while(q){

                              if(value==q->value){

                                       p->next=q->next;

                                       if(0==q->next) 

                                       list->tail=p;

                                       delete q;

                                       q=0;//请百度野指针

                                       list->size--;

                                       return true;

                            }

                            q=q->next;

               }

         }

END:printf("Did't find this value in the list!\n");

return false;

}

LinkedList* insert(LinkedList* list,int value){

      Node* tNode=new Node;//new 的三部曲:申请内存,调用构造函数,返回指针//Node* tNode=new Node();都行

      tNode->value=value;

      tNode->next=0;

      list->tail->next=tNode;

      list->size++;

       return list;

}

void Print(LinkedList* list){

     Node* p=list->head->next;

     if(0==p)return;

     while(p){

             printf("%d ",p->value);

             p=p->next;

      }

      printf("\n");

}

int main(){

     LinkedList* lList=0;

     lList=NewLinkedList();

     lList=Insert(lList,100);

     lList=Insert(lList,1);

     lList=Insert(lList,10);

     lList=Insert(lList,80);

     Print(lList);

     Remove(lList,99);

     Reverse(lList);

     Print(lList);

     BubbleSortList(lList);

     Print(lList);

     return 0;

}




































单链表的基本操作(c++实现) (1)编程实现单链表的基本操作:建立单链表,查找单链表,插入单链表,删除单链表; (2)采用单链表结构编程实现:两个有序单链表的归并运算。 /* (1) */ #include <iostream> typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; bool InitList(... 阅读详情

相关推荐

C++实现单链表的16种基本操作

C++实现单链表的16种基本操作 链表初始化,头插法创建链表,尾插法创建链表,取值,查找(第i个节点的数据域或者数据域为某个特定值的节点),有顺序的合并两个链表,无顺序的合并两个链表,插入,删除,逆置链表,求链表的节点个数,删除数据域重复的节点,输出链表,判空,置空链表。 以下是我写的头文件的代码 #ifndef DANLIANBIAO_H #define DANLIANBIAO_H #endif #include<iostream> #include<stdio.h> #inclu

weixin_47373497的博客 2786

c++-常用数据结构-linkedList相关操作

链表排序排序,归并排序,快排排序。

qq_34179431的博客 531

数据结构单链表基本操作(C/C++实现)

数据结构-单链表-基本操作(C/C++实现) 注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据 涉及基本运算 初始化单链表 依次采用尾插法插入元素 输出单链表 输出单链表的长度 判断单链表是否为空 输出单链表的第n个元素 输出元素x的位置 在第n个元素位置上插入x元素 输出单链表 删除单链表的第n个元素 输出单链表 释放单链表 GitHub地址(包含.cpp文件和可执...

JunsIr的技术栈 6854

C++ 单链表基本操作

一:目的 用C++实现单链表的基本操作; 一:实现 1. 首先定义单链表的结构和类,书写在LinkList.h中 # include # include using namespace std; //定义节点的value struct Info { string name; //姓名 int id; //学号 Info(string info_name, i

nichengwuxiao的博客 2205

C++实现循环单链表的基本操作

领会循环单链表存储结构和掌握循环单链表中的各种基本运算算法设计,实现循环单链表的各种基本运算和整体建表算法。

henry594xiaoli的博客 6978

c/c++ 数据结构-线性表(单链表基本操作的实现)

线性表–链式存储结构 单链表基本操作的实现

Economic_shark的博客 2256

单链表的基本操作 C++

转载自https://blog.youkuaiyun.com/tianzhaixing2013/article/details/22786001 #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;conio.h&gt; /** * cstdio是将stdio.h的内容用C++头文件的...

fighting 1485

C++链表操作总结和常见链表操作

链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放数据元素。链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。可以看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。实际上,链表中的每个结点可以用若干个数据和若干个指针。结点中只有一个指针的链表称为单链表,这

程序猿老樊的博客 1万+

c语言中tail和head的用法,tail 与head用法

tail命令NAMEtail - output the last part of filesSYNOPSIStail [OPTION]... [FILE]...DESCRIPTION-n, --lines=[+]NUMoutput the last NUM lines, instead of the last 10; or use -n +NUMto output starting with l...

weixin_35073484的博客 2901

C++单链表基本操作与实践

单链表是一种基础而重要的数据结构,在C++编程中经常被用来实现队列、栈等抽象数据类型。通过学习单链表的基本操作,我们可以更好地理解指针的使用,以及动态内存分配和释放的基本方法。本章节将介绍如何在C++中实现单链表的基本操作,包括创建节点、插入节点、删除节点以及遍历链表等。单链表(Singly Linked List)是由一系列节点组成的数据结构,每个节点包含两部分:一部分是存储数据的变量,另一部分是指向下一个节点的指针。

weixin_28913879的博客 962

PyTorch实战:5步搞定Res2Net图像分类模型(附完整代码)

本文详细介绍了如何使用PyTorch在5步内构建高性能Res2Net图像分类模型,包括环境配置、核心模块实现、完整网络架构搭建、训练流程优化及模型部署技巧。Res2Net通过多尺度特征融合机制显著提升图像分类性能,附完整代码帮助开发者快速实践。

java5的博客 1024

C++实现单链表基本操作

C++实现单链表基本操作 本博客按照上篇博客线性表单链表的基本操作而写出的完整代码,详情请看单链表基础概念 #include<iostream> using namespace std; //函数结果状态代码 #define OK 1 #define ERROR 0 typedef int Status; // Status 相当于 int typedef ...

diviner_s的博客 5758

ENVI5.6 Seamless Mosaic多景影像镶嵌色差问题

多景影像无缝镶嵌色差问题拟解决方法

Matchaya的博客 7705

单链表的基本操作C++

在这里插入代码片@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式

alanmian的博客 8359

RK3566基于Buildroot定制QT开发环境的完整指南

本文详细介绍了如何在RK3566开发板上使用Buildroot定制QT开发环境的完整流程。从基础环境搭建、Buildroot初始配置到QT模块选择与编译验证,提供了实战经验和常见问题解决方案,帮助开发者高效完成嵌入式Linux下的QT开发环境部署。

weixin_26804345的博客 359

AutoDock Vina多配体对接 (Simultaneous Multiple Ligand Docking)

多配体分子对接(Simultaneous Multiple Ligand Docking, SMLD)或(Multiple Ligand Simultaneous Docking, MLSD)是一种分子对接技术,用于将多个配体(小分子药物候选物)同时对接到一个蛋白质分子的结合位点。与传统的分子对接技术不同,传统方法通常只考虑一个配体与一个蛋白质的相互作用。SMLD的目标是更高效地研究多个配体如何与同一个蛋白质相互作用,以寻找潜在的药物候选物。

MurphyStar的博客 7146

C++模板实现单链表基本操作

#ifndef LINKLIST_H #define LINKLIST_H #include <iostream> using namespace std; template <typename T> struct Node{ T data; struct Node* next; }; template <typename T> class...

starzyh的博客 1121

Proxmox VE网络配置踩坑实录:从Web界面无法访问到完美修复的全过程

本文详细记录了Proxmox VE服务器Web界面无法访问的完整排查与修复过程。作者从基础网络连通性测试入手,逐步排查了服务状态、SSL证书、端口监听、防火墙规则及网关配置,最终定位并解决了问题。文章提供了系统性的故障排查思路和实用的修复命令,对管理Proxmox VE网络具有重要参考价值。

weixin_29231221的博客 890

利用C++实现单链表的基本操作

利用C++的模板类,实现了一些对于单链表的一些基本操作,包括插入、删除、查找等基本操作。实现的内容可能相对单薄,但我觉得能够帮助帮助大家对单链表有一个比较好的理解。

weixin_43165699的博客 1317

BMS开发避坑指南:如何用ADBMS6815实现0.03%精度的电池采样?

本文深入解析了如何利用ADBMS6815等高精度AFE芯片,在车规级BMS开发中实现0.03%级别的电池电压采样精度。文章从芯片选型、硬件设计、软件配置、算法优化到系统验证,提供了一套完整的实战指南,帮助工程师系统性地提升BMS测量精度,从而保障电池安全、延长寿命并增强产品竞争力。

weixin_28314575的博客 135

从网口变压器到TVS管:手把手设计通过4KV浪涌的以太网电路

本文详细解析工业级以太网接口4KV浪涌防护设计,从网口变压器选型到TVS管布局,提供通过IEC61000-4-5标准测试的完整方案。重点介绍Bob Smith电路优化和PCB设计技巧,帮助工程师有效应对雷电感应和设备开关瞬态干扰,确保工业设备稳定运行。

study的专栏 286

c++ 单链表基本操作

#include #include #include #include #include /*c++实现简单的单链表操作*/ using namespace std; typedef struct student { int data; struct student *next; }node; //建立单链表 node *creat() { n

cfan0801的专栏 2万+

【Java 实战】通过Redis实现购物车功能

以上就是今天要讲的内容,本文仅仅简单介绍了如何通过Redis实现购物车功能,以上方法亲测有效,希望能给大家一个参考。

~~~~~~~BUG FLY~~~~~~~~~ 9970

cpp 单链表基本操作

单链表的结构体 定义: #include <stdio.h> #include <malloc.h> typedef struct LNode{ int data; struct LNode* next; }LNode, * LinkList; //定义 * LinkList 的意义? 单链表 头插法: //单链表 头插法 LinkList createTo...

BLOG of iJX 2101

IDEA的使用指南

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++实现单链表的12种基本操作

C++单链表的操作 2017-12-25 // 单链表.cpp: 定义控制台应用程序的入口点。 //Author:kgvito //Date: 2017.12.25 #include "stdafx.h" #include<iostream> using namespace std; typedef int DataType; #define Node ...

Kirk.Vito的博客 1万+

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

上一篇: 碎碎念C++指针
下一篇: 教科书上的单链表定义及基本操作
muximuxi525
博客等级 码龄15年 134粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值