C++写的一个链表程序

C++创建单链表 今天整理了一下创建链表的代码,我主要使用了尾插法,因为头插法插入的数据是倒叙的,所以我不常用,且原理和尾插法一样,所以这里只给出尾插法。 尾插法需要定义一个尾指针ptail,始终指向链表的尾端p,每次新插入结点时,都使用这个尾指针指向新插入的结点,即ptail->next=pnew,然后将尾指针更新为pnew,即ptail=p。如此循环。先给出一个没有头指针的创建方法(头指针即第一个结点 阅读详情

作为刚入公司的小菜鸟,公司居然让我学习C++,以前学的php或许要荒废了呀,刚上来,就让我写个链表程序,查了网上的资料,自己模仿写了一个,如下:
list.h:

#pragma once
#ifndef LIST_H
#define LIST_H
#include "node.h"

class list
{
public:
    list(void);//构造函数
    bool setList(char* data,int i);//该某个节点处的数值类型
    bool insertList(node* pn,int i);//在第i个节点后面增加某个某个节点数据
    bool appendList(node* pn);//在链表末尾追加数据
    bool unshiftList(node* pn);//在链表头部追加数据
    bool deleteList(int i);//删除某个节点
    char* getList(int i);//获得第i个节点的数据
private:
    node* head;//定义头

};
#endif

list.cpp

#include <iostream>
#include "list.h"
#include "node.h"
using namespace std;

//初始化head数据
list::list():head(node::createNode())
{

}

//修改某个节点处的数值类型
bool list::setList(char* data,int i){
if(strlen(data)>STRMAX){
printf(“输入的字符串长度大于 %d,将会被截短”,STRMAX);
}
if(i<0){
printf(“非法参数”);
}
node* next = head;
while(i){
next = next->pNext;
if(next==NULL){
printf(“要搜索的节点不存在”);
}
–i;
}
//为传过来的data复制一份内存,防止出现野指针
char* data_copy =(char*)malloc(STRMAX);
memset(data_copy,’\0’,STRMAX);
strcat(data_copy,data);
next->data=data_copy;//找到位置后进行赋值
return true;

}

//在链表末尾追加数据
bool list::appendList(node* pn){
if(pn==NULL){
printf(“传入节点不存在”);
return false;
}
node* next = head;
while(next->pNext){
next=next->pNext;
}//寻找尾节点
next->pNext=pn;
return true;

}
//在链表头部追加数据
bool list::unshiftList(node* pn){
if(pn==NULL){
printf(“传入节点不存在”);
return false;
}
pn->pNext=head;
head=pn;
return true;

}

//在第i个节点后面增加某个某个节点数据
bool list::insertList(node* pn,int i){
if(i<0){
printf(“非法参数”);
return false;
}
if(i==0){
unshiftList(pn);
}
node* next = head;
while(i){
next=next->pNext;
if(next==NULL){
printf(“插入点大于链表的长度”);
return false;
}
–i;
}
if(next->pNext==NULL){
appendList(pn);
return true;
}
pn->pNext=next->pNext;//将i位置的next指针传给新插入的node数据
next->pNext=pn;//将i位置的next指针指向新值;
return true;
}

//删除某个节点
bool list::deleteList(int i){
if(i<=0){
printf(“非法参数”);
return false;
}
if(i=0){
node* old = head;
head = head->pNext;
delete old;//删除头节点
return true;

}
node* before = head;
while(i-1){
    before=before->pNext;
    if(before->pNext==NULL){
        printf("要删除的节点不存在");
        return false;
    }

    --i;
}
node* cur=before->pNext;
before->pNext=cur->pNext;//把当前的指针赋给before
delete cur;//删除当前node
return true;

}

//获得第i个节点的数据
char* list::getList(int i){
if(i<0){
printf(“非法参数”);

}
node* next = head;
while(i){
    next = next->pNext;
    if(next==NULL){
        printf("要搜索的节点不存在");
    }
    --i;
}
return next->data;

}
“`

`

node.h

pragma once

include

const int STRMAX=20;

class node
{
public:
node();
node(const char* content);
~node();
static node* createNode();
static node* createNode(const char* content);

public:
char* data;
node* pNext;
};
`

node.cpp

“

include “node.h”

define STRMAX 20`

node::node()
//:data(0),pNext(NULL)
{
data = new char[STRMAX+1];
strncpy (data,”head”,5);
pNext = NULL;
}
node::node(const char* content){
data = new char[STRMAX+1];
strncpy(data,content,STRMAX);
pNext = NULL;
}
node* node::createNode(){
return new node();
}
node* node::createNode(const char* content){
if(content==NULL){
printf(“内容为空”);
return new node();
}
if(strlen(content)>=STRMAX){
printf(“createNode() input string is longer than %d, will be truncated”,STRMAX);
}
return new node(content);
}
/*

node* node::getNodepNext(int i){
if(i<0){
printf(“非法参数”);

}
node* next = head;
while(i){
    next = next->pNext;
    if(next==NULL){
        printf("要搜索的节点不存在");
    }
    --i;
}
return next->pText;

}
*/

node::~node()
{
if(data){
free data;//释放内存
pNext = NULL;
}
}

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

相关推荐

C++ 实现链表类(链表的各种操作)

Node.h: #ifndef NODE_H #define NODE_H template <class T> class Node { public: Node<T> *next; Node<T> *prev; T data; }; #endif //TEST1_NODE_H List.h: #ifndef LINK_...

zhouzzz000的博客 6万+

数据结构——表

顺序表 #ifndef SEQLIST_H #define SEQLIST_H //顺序存储 typedef int DataType; struct Node { int MaxNum; //顺序表表中最大存储元素个数 int num; DataType *element; }; typedef struct Node SeqList; typedef struct Node *PSe...

iforeverhz的博客 196

【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】

题目: 建立一个学生信息链表,每个结点包括:学号、姓名、成绩。实现链表的建立、显示和查询。查询是指输入一个学号,如果链表中存在该学号的的结点,则显示此结点的数据。 源代码: //科目:C++实验3 //题目:建立一个学生信息链表,每个结点包括:学号、姓名、成绩。 //语言:C++ //作者:武叶 //创作时间:2012年3月20日 #include using names

kc15963的专栏 2万+

C语言/C++实现链表的详细教程

链表是一种常用的数据结构,它由一系列节点组成,每个节点包含两部分内容:数据和指向下一个节点的指针,最后一个节点指向空。链表的节点可以动态添加和删除,因此可以方便地进行插入、删除等操作。链表有多种类型,包括单向链表、双向链表和循环链表等。

qq_43884946的博客 1万+

C++基础语法:链表

链表是物理存储单元上非连续的,非顺序的存储结构,链表是由一个个结点,通过指针来联系起来的,其中每个结点包含数据和指针: 或者我们采用另一张更加明显的图: 因为在C++语言中,当我们生成一个数组的时候,就要声明数组的长度,如此计算机便会在内存上开辟一个连续的不间断的内存空间来存储数据,因为存在着这样的一种可能,也就是数组所使用的内存空间之后的内存空间已经被使用,所以C++中一旦数组的大小明确了,就不能够再改变了。而且因为数组是存储一系列的同一类型的变量的集合,所以构成数组的每一个元素占用的内.

baiyechangjiu的博客 8677

arduino uno spi驱动12864

arduino uno spi驱动12864

yvee的博客 2060

链表的程序

a . h # pragma once # include < stdio . h > # include < stdlib . h > typedef int SLDateType ; typedef struct SListNode { SLDateType date ; struct SListNode * next ; }SLN; void SLPrint ( SLN * phead ); void SLPushBack ( SLN **

weixin_39990754的博客 276

ADS新手必看:ICCAP数据导入与导出CSV的完整流程(附常见问题解决)

本文为ADS新手详细讲解了如何将ICCAP测试数据导入ADS进行仿真分析,并导出为通用CSV格式的完整流程。内容涵盖文件格式解析、导入设置、数据验证、处理技巧及常见问题排查,重点解决了数据文件导入过程中的兼容性与单位映射等核心难点,帮助射频工程师高效连接测量与仿真环节。

peace的博客 557

数据结构与算法——链表的c++实现

后面补充双向链表等!

m0_68963624的博客 1452

多层下拉框_HLM多层线性模型|HLM2教程

01多层线性模型简介多层线性模型(Multilevel linear model),又称为多层分析、分层线性模型。其本质是线性模型的线性模型、回归的回归。本文主要介绍如何使用HLM6.08软件来构建两层线性模型。02案例简介水平1文件:样例数据HSB1.sav包括7185个案例和4个变量:MINORITY:种族(1=minority, 0=other)FEMALE:性别(1=femal...

weixin_35714534的博客 5619

Global Mapper与ArcGIS双剑合璧:自动化与半自动矢量化提取地物轮廓实战

本文详细介绍了如何结合Global Mapper的自动化批量提取与ArcGIS的半自动精细修整功能,高效完成地物轮廓矢量化工作。通过实战案例,阐述了利用Global Mapper快速抓取初步轮廓,再借助ArcGIS的ArcScan等工具进行精细化编辑和优化的完整工作流,有效提升地理信息数据处理效率。

weixin_29284657的博客 119

【c语言】链表(适合初学者)

C语言中的链表是一种常见的数据结构,它由一系列的节点(node)组成,每个节点包含一个数据元素和一个指向下一个节点的指针。链表可以用来表示各种数据结构,例如队列、堆栈、树等。在C语言中,链表的节点通常是通过结构体来定义的。int data;在这个结构体中,data是节点存储的数据元素,next是指向下一个节点的指针。因为next指向的是另一个Node类型的结构体,所以需要使用类型来定义。链表的头指针是指向第一个节点的指针,通常称为head。对于一个空链表,头指针为NULL。链表的尾节点的next。

weixin_74337975的博客 3302

P4语言实战:如何用Barefoot Tofino实现自定义网络协议(避坑指南)

本文是一份详尽的P4语言实战指南,重点讲解如何利用Barefoot Tofino可编程交换芯片实现自定义网络协议。内容涵盖从P4编程模型解析、自定义协议头定义,到匹配-动作流水线构建、性能优化及生产环境部署的全过程,并特别分享了在资源管理、字节序、调试技巧等方面的宝贵避坑经验,旨在帮助网络开发者和研究人员掌握数据平面编程的核心能力。

echo99的专栏 640

花了差不多一个半小时写了一个基于C++的链表程序,现在发上来,大家多给点意见啊

#include using namespace std;typedef struct NODE{    int i;    struct NODE *next;}no;no* Insert(no *header) //向链表中插入数据,并将链表以升序排列{    int m; cout     cin>>m;  no *p = NULL;   

paipaikaka的专栏 1112

GB28181 —— 3、C++编写GB28181设备端,完成注册、注销、保活心跳、响应查询目录等功能(附源码)

GB28181 —— Win10下编写GB28181设备端,完成注册、注销、保活心跳、响应查询目录等功能(附源码)

1308

【工具篇】万字长文拆解 Otter.ai:语音转文字领域的「瑞士军刀」是如何炼成的?(附保姆级教程)

但需要注意,2024年欧盟已出台《AI转录伦理指南》,要求所有录音需获得参与者明确授权。举个真实案例:某硅谷创业团队用Otter.ai记录产品评审会,系统自动标红争议点并生成待办事项,会议效率提升40%。AIGC技术原理、 实时转录解析、 定价策略分析、 语音算法拆解、 多平台兼容测试、 深度学习框架、 空间计算专利。——无论是跨国会议、课堂讲座还是深夜灵感,它都能实时生成带时间戳的文本记录,准确率高达95%。(此处建议插入Otter.ai会议转录动图,展示实时字幕生成效果)(数据来源:综合参考文献整理)

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1259

C++ //习题 7.6 写一个函数create,用来建立一个动态链表。所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。

C++程序设计 (第三版) 谭浩强 习题7.6

Made in Code 585

塔石DTU通过MQTT传递数据教程

塔石通过MQTT通讯上传ADL400电表用电量。

renkai721的专栏 252

用C++语言写一个程序:利用无参构造函数建立单链表(myLinkList1) ,并打印出该单链表讯息。 此时,单链表中应无数据,打印出无数据的讯息...

以下是在 C 语言中利用无参构造函数建立单链表(myLinkList1) 并打印出该单链表讯息的程序代码: #include <stdio.h> #include <stdlib.h> //定义结构体 struct node { int data; struct node *next; }; //无参构造函数,用来创建一个空的单链表 struct nod...

weixin_42591413的博客 98

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

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

用一段代码实现一个链表倒序(C++实现)

网上找的一个好的答案: #include "stdafx.h" #include using namespace std; struct Node { int value; Node* next; Node( int v, Node* p ) : value(v), next(p) {} }; void reverse( Node*& p ) { Node* t = 0;

1696

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

c++实现一个简单的链表

c++实现一个简单的链表

qq_16635171的博客 720

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

写一函数建立一个有3名学生数据的单向动态链表和输出链表的函数print,把它们合起来加上一个主函数,组成一个程序

写一函数建立一个有3名学生数据的单向动态链表和输出链表的函数print,把它们合起来加上一个主函数,组成一个程序 代码: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { long num; float score; struct Stu...

AKK188888881的博客 2696

C++之单链表与双链表逆序实例(二百七十九)

本篇目的:C++之单链表与双链表逆序实例单链表和双链表是线性表的两种常见实现方式,它们在数据结构中占有重要的地位。链表通过指针将不连续的内存空间连接起来,从而实现对线性数据的存储和管理。

Android系统攻城狮 1369

C++ 模板类 单链表

C++作业,用模板类写链表,完成了对基本的单链表的插入,删除等。 #include <iostream> using namespace std; template<typename T> struct Node { T data; Node<T> *next; }; template<typename T> class LinkedLis...

Ich/liebe/dich的编程せかい 396

c++链表(详解版)

在自学C++的时候,看到好多人都在提链表,于是就自学了一下,看了很多别人的文章,加入了一些自己的理解,做了一下总结

slandarer的博客 22万+

C++ 链表总结

一、单链表问题 定义ListNode节点结构体 struct ListNode { int val; ListNode *next; //定义节点的后继 ListNode(int x) : val(x),next(NULL);//声明一个节点 } 1、链表反转 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5-&amp;gt;null ^ root   逆序的思...

会飞的鱼的博客 3044
上一篇: 个人博客设计之博文归档(archive)
下一篇: IOS shareSDK 集成引入库以及问题
htmlgood
博客等级 码龄12年 23粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值