头文件:

//实现链式线性表
#include "stdafx.h"
using namespace std;typedef int DataType; //将数据类型设为int类型/或者其他类型均可//链式结构体定义
typedef struct Node{DataType data; //当前的数据struct Node* next; //保留着指向下个数据的地址
}LinkList;//链式线性表类的声明
class Linkential{public://构造函数和非构造函数Linkential();~Linkential();private://查找数据//@param[in]:L:需要查询的链表//@param[in]:pos:序号//return:该位置的值DataType GetDataByPos(LinkList* L,int pos );//查找数据//@param[in]:L:需要查询的链表//@param[in]:pos:序号//return:查找位置的地址LinkList* FindListByPos(LinkList* L,int pos );//插入数据//@param[in]:L:需要查询的链表//@param[in]:pos:序号://@param[in]:data:需要插入的值//return:false:插入失败,true:插入成功bool InsertLinkData(LinkList* L, int pos, DataType data);//删除数据//@param[in]:L:需要查询的链表//@pos:删除的位置//return:false:删除失败,true:删除成功bool DeleteLinkData(LinkList* L, int pos);//清空链表bool ClearLinkData(LinkList* L);//得到链表长度//@param:L:链表头,//return:长度int getLinkLength(LinkList* L);
};

实现cpp文件:

#include "stdafx.h"
#include "LinkLineList.h"//实现Linkential类的方法//构造函数
Linkential::Linkential(){}//析构函数
Linkential::~Linkential()
{}DataType  Linkential::GetDataByPos(LinkList* L,int pos )
{LinkList * m = L;int i = 1;while((m!=nullptr) &&(i < pos)){m = m->next; //往下遍历i++;}//判断是否i为posif (i!=pos){return NULL;//返回空 说明链表长度小于它;}return m->data;
}LinkList* Linkential::FindListByPos(LinkList* L,int pos )
{LinkList * m = L;int i = 1;while((m!=nullptr) &&(i < pos)){m = m->next; //往下遍历i++;}//判断是否i为posif (i!=pos){return nullptr;//返回空 说明链表长度小于它;}return m;
}bool Linkential::InsertLinkData(LinkList* L, int pos, DataType data)
{//pos=1,说明需要在线性表头插入if (pos==1){//创建新的线性表 下个指针指向LLinkList * s = new LinkList;s->data = data;s->next = L;return true;}//不在表头的情况LinkList* cur_list = FindListByPos(L,pos-1);//说明长度超过了--if (cur_list==nullptr){return false;}LinkList * sList = new LinkList;sList->data=data;LinkList* nex_list = cur_list->next;//可能nex_list地址为空 但是不影响cur_list->next = sList;sList->next = nex_list;return true;
}bool Linkential::DeleteLinkData(LinkList* L, int pos)
{//删除第一个节点if (pos==1){LinkList * p = L;if(p==nullptr){return false;}L = L->next;delete p;return true;}LinkList * q = L;//得到需要删除的前一个节点LinkList * m = FindListByPos(L,pos-1);if (m==nullptr){return false;}LinkList*del_list = m->next;if (del_list==nullptr){return false;}m->next = del_list->next;delete del_list;return true;
}bool Linkential::ClearLinkData(LinkList* L)
{LinkList *mm = L;while ( L->next!=nullptr){mm = L->next;delete L;L = mm;}return true;
}int Linkential::getLinkLength(LinkList* L)
{//原理 根据next指针为空==说明到底了int  length = 0;LinkList * cur_List = L;//当List存在时while (cur_List){length++;cur_List = cur_List->next;}//返回长度return length;
}

比较好理解,就不讲解了 具体可以看我的github

C++数据结构02--链式线性表(单链表的实现)相关推荐

  1. php数据结构之线性表,php数据结构之顺序链表与链式线性表示例

    本文实例讲述了php数据结构之顺序链表与链式线性表.分享给大家供大家参考,具体如下: 链表操作 1. InitList(L):初始化链表 2. DestroyList(L):删除连接 3. Clear ...

  2. 【数据结构】线性表之双向链式线性表

    2019独角兽企业重金招聘Python工程师标准>>> public class DuLinkList<T> {// 定义一个内部类Node,Node实例代表链表的节点p ...

  3. 链式线性表和顺序线性表

    顺序线性表 顺序表的存储结构通常用一维数组来描述,数组的下标与元素在线性表中的序号相对应. 在这里插入代码片 线性表的存储结构: typedef struct {int elem[MAX_SIZE]; ...

  4. Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)

    3-05. 求链式线性表的倒数第K项(15) 时间限制 250 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 给定一系列正整数,请设计一个尽可能高效的算法, ...

  5. 求链式线性表的倒数第K项 (20 分)

    7-173 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整 ...

  6. PTA5-19 求链式线性表的倒数第K项

    5-19 求链式线性表的倒数第K项   (20分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数 ...

  7. 拼题---求链式线性表的倒数第K项(两种算法的比较)

    7-17 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表 ...

  8. 1-6 求链式线性表的倒数第K项

    1-6 求链式线性表的倒数第K项 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数 ...

  9. 求链式线性表的倒数第K项(两种方法,第二种较好)

    求链式线性表的倒数第K项 题目 答案 第一种解法 第二种解法(较好) 注意 题目 答案 第一种解法 这种方法是正常输入,然后将链表逆置,虽然pta是可以通过的(写数组应该都能通过),但明显没有下一种好 ...

  10. python的线性链表_Python线性表——单链表-阿里云开发者社区

    Python线性表--单链表 线性表简介 线性表是一种线性结构,它是由零个或多个数据元素构成的有限序列.线性表的特征是在一个序列中,除了头尾元素,每个元素都有且只有一个直接前驱,有且只有一个直接后继, ...

最新文章

  1. Java基础知识回顾之六 ----- IO流
  2. java web日期_java-web——第十一课 时间类
  3. css4个伪元素,CSS_CSS3中的content属性使用示例,CSS中主要的伪元素有四个:befo - phpStudy...
  4. oracle自治事务的写法_Oracle的自治事务
  5. Chrome——我的Chrome插件
  6. 安装DelayExchange插件
  7. mysql动态变量查询_MySQL将变量传递给动态查询
  8. android删除电池功能,Android教程:删除电池信息增加待机时间
  9. 实例--[QSerialPort]串口通信
  10. linux dlopen 源码,采用dlopen、dlsym、dlclose加载动态链接库
  11. 【转】Java中重载和重写的区别
  12. Excel 4.0宏躲避杀软检测(转)
  13. 爱奇艺开源的高性能网络安全监控引擎
  14. VS2008SP1使用入门
  15. 部署kubernetes
  16. Java二叉树数据结构原理
  17. 什么是场景化需求分析法?如何有效使用这个客户需求分析最有效的方法?
  18. C语言pow函数的调用
  19. LSTM - 长短期记忆网络
  20. 03 ,seaborn 颜色 : 正态分布图,多元正态分布,核密度估计图

热门文章

  1. RocketMQ入门到入土(二)事务消息顺序消息
  2. 2020远程面试几家公司后,从阿里、美团、携程带回来的面试题及文档
  3. linux编码安装mysql_在Ubuntu 15.10下安装mysql设置数据库编码
  4. python中字符串之间的比较_如何利用python来对比两个字符串的差异
  5. Java关键字:final、default、transient
  6. Zookeeper的一次启动失败问题解决
  7. Mysql 用Not In 的问题:子查询的结果中有Null则查不出来
  8. AcWing 204. 表达整数的奇怪方式 / Strange Way To Express Integers
  9. git 新建服务器的版本以及项目的用户
  10. cursor -- 定义鼠标样式