[文档整理系列] 线性链表之单链表

  1. /*
  2. 问题描述:线性表____链表_____单链表
  3. @date 2017-3-7
  4. */
  5.  
  6. #include<iostream>
  7. using namespace std;
  8.  
  9. template<typename T>
  10. struct node{
  11. T data;
  12. node<T> *next;
  13. };
  14.  
  15. template<typename T>
  16. class LinkedList{
  17. public:
  18. LinkedList();
  19. LinkedList(T arr[],int n);
  20. ~LinkedList();
  21. int getLength();
  22. void InsertAt(int n,T data);
  23. T DeleteAt(int i);
  24.  
  25. T GetData(int i);
  26. int getDataAt(T data);
  27. void Print();
  28. private:
  29. int length;
  30. node<T> *first;
  31. };
  32.  
  33. template <class T>
  34. LinkedList<T>::LinkedList(){
  35. first = new node<T>;
  36. first->next = NULL;
  37. length = 0;
  38. }
  39.  
  40. template <class T>
  41. LinkedList<T>::LinkedList(T arr[],int n){
  42. first = new node<T>(); //初始化指针变量
  43. first->next = NULL;
  44.  
  45. for(int i = 0;i<n;i++){
  46. node<T> s;
  47. s.data = arr[i];
  48. s.next = first->next;
  49. first->next = &s;
  50. }
  51.  
  52. length = n;
  53. cout<<"初始化成功!"<<endl; //test
  54. }
  55.  
  56. template<typename T>
  57. LinkedList<T>::~LinkedList(){
  58.  
  59. node<T> *q;
  60. while (first) //释放单链表的每一个结点的存储空间
  61. {
  62. q=first; //暂存被释放结点
  63. first=first->next; //工作指针p指向被释放结点的下一个结点,使单链表不断开
  64. delete q;
  65. }
  66. cout<<"析构(销毁)成功!"<<endl; //test
  67. }
  68.  
  69. template<typename T>
  70. int LinkedList<T>::getLength(){
  71. return length;
  72. }
  73.  
  74. template< typename T>
  75. void LinkedList<T>::InsertAt(int n,T data){
  76.  
  77. cout<<"成功插入第"<<n<<"个位置!"<<endl;
  78. }
  79.  
  80. int main(){
  81. int arr[6]={7,19,4,5,6,9};
  82. LinkedList<int> t(arr,6);
  83. // t.InsertAt(7,689);
  84. return 0;
  85. }

  

[C++]线性链表之单链表的更多相关文章

  1. 【Java】 大话数据结构(2) 线性表之单链表

    本文根据<大话数据结构>一书,实现了Java版的单链表. 每个结点中只包含一个指针域的链表,称为单链表. 单链表的结构如图所示: 单链表与顺序存储结构的对比: 实现程序: package ...

  2. Java数据结构和算法(一)线性结构之单链表

    Java数据结构和算法(一)线性结构之单链表 prev current next -------------- -------------- -------------- | value | next ...

  3. 线性表之单链表C++实现

    线性表之单链表 一.头文件:LinkedList.h //单链表是用一组任意的存储单元存放线性表的元素,这组单元可以是连续的也可以是不连续的,甚至可以是零散分布在内存中的任意位置. //单链表头文件 ...

  4. [数据结构 - 第3章] 线性表之单链表(C++实现)

    一.类定义 单链表类的定义如下: #ifndef SIGNALLIST_H #define SIGNALLIST_H typedef int ElemType; /* "ElemType类型 ...

  5. 数据结构5: 链表(单链表)的基本操作及C语言实现

    逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着.恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为线性表的链式存储. 由于分散存储,为了能够体现出数据元素之间的逻辑关 ...

  6. 续上文----线性表之单链表(C实现)

    本文绪上文线性表之顺序表(C实现) 本文将继续使用单链表实现线性表的另外一种存储结构.这种使用链表实现的存储结构在内存中是不连续的. C实现代码如下: #include<stdio.h> ...

  7. 线性表 (单链表、循环链表-python实现)

    一.线性表 线性表的定义: 线性表是具有相同数据类型的有限数据的序列. 线性表的特点: 出了第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外有且只有一个后继. 线性表是一种逻辑结构,表示元 ...

  8. Java数据结构-线性表之单链表LinkedList

    线性表的链式存储结构,也称之为链式表,链表:链表的存储单元能够连续也能够不连续. 链表中的节点包括数据域和指针域.数据域为存储数据元素信息的域,指针域为存储直接后继位置(一般称为指针)的域. 注意一个 ...

  9. 数据结构(java版)学习笔记(三)——线性表之单链表

    单链表的优点: 长度不固定,可以任意增删. 单链表的缺点: 存储密度小,因为每个数据元素,都需要额外存储一个指向下一元素的指针(双链表则需要两个指针). 要访问特定元素,只能从链表头开始,遍历到该元素 ...

随机推荐

  1. javascript正则表达式---正向预查

    什么是正向预查?这里有腾讯招聘的一个例子: 如何给一串数字用千分制表示?比如9999999999变成9,999,999,999.这样一个问题你会怎么答呢?博主js正则学的不咋样,然后用操作字符串的办法 ...

  2. 译:Spring Boot 自动伸缩

    原文链接:https://dzone.com/articles/spring-boot-autoscaler 作者:Piotr Mińkowski 译者:helloworldtang 自动伸缩是每个人 ...

  3. [luogu3388][割点]

    题目链接 思路 真板子题.割点是指在一个无向图中,删去之后图将不再连通的点.可以用tarjan算法求.根据割点有两种情况,一种是根,一种是非根.如果不是根的就去判断在tarjan的时候当前节点所能到的 ...

  4. 第三篇-ubuntu18.04下截图快捷键

    ubuntu自带的截图工具感觉能够满足基本的截图功能,可以不必安装另外的截图软件. 一般用到的截图类型有三种:全屏.当前活动窗口.自定义区域,其中自定义区域截图是最灵活也是我们用的最多的方式.在ubu ...

  5. django基于存储在前端的token用户认证

    一.前提 首先是这个代码基于前后端分离的API,我们用了django的framework模块,帮助我们快速的编写restful规则的接口 前端token原理: 把(token=加密后的字符串,key= ...

  6. 截取 还没有读的txt章节 生成新的文件

    package file; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; imp ...

  7. linux基本

    一.初识 Linux与windows相比的优点是:长期稳定的运行,避免了因为系统的问题导致的项目运行中断:占用资源少:开源软件多. Centos(Community Enterprise Operat ...

  8. C++: typedef与template的配合使用;

    利用STL的vector能够实现多维矩阵,但是写起来不怎么好看,使用typedef定位为 固定的格式: //多维矩形,vector实现: template<class T> class i ...

  9. 利用salt搭建hadoop集群

    自动化工具有很多..今天总结一下salt安装hadoop 步骤,学习过程. 1,机器列表 hosts文件    只需要将namenode的两台机器上配置 ,不解释了. 2.salt-master在10 ...

  10. Ubuntu 开启SSH服务以及有关设置:安装,指定端口号、免密登录、远程拷贝

    本文所用系统为 Ubuntu 18.04   什么是SSH?     简单说,SSH是一种网络协议,用于计算机之间的加密登录.全名为:安全外壳协议.为Secure Shell的缩写.SSH为建立在应用 ...