1. main.cpp
    1 #include "myDataBase.h"
  2. 2
  3. 3 int main()
  4. 4 {
  5. 5 int i =0;
  6. 6 myDataBase::GetInstance().createDataBaseList();
  7. 7 for(i=0;i<3 ; ++i)
  8. 8 {
  9. 9 string str;
  10. 10 cin >> str;
  11. 11 myDataBase::GetInstance().InsertListDataTail(i,str);
  12. 12 }
  13. 13 myDataBase::GetInstance().ShowDataBaseList();
  14. 14
  15. 15 return 0;
  16. 16 }
  1.  

  myDataBase.h

  1. 1 #ifndef _MYDATABASE_H
  2. 2 #define _MYDATABASE_H
  3. 3
  4. 4 #include <cstddef>//NULL 需要使用的头文件
  5. 5 #include <iostream>
  6. 6 #include <strings.h>
  7. 7 using namespace std;
  8. 8
  9. 9 //Data content
  10. 10 class dataContent{
  11. 11 public:
  12. 12 int key;
  13. 13 string name;
  14. 14 };
  15. 15
  16. 16 /*存储连表的class*/
  17. 17 class node{
  18. 18 public:
  19. 19 //数据
  20. 20 dataContent data ;
  21. 21 //int data;
  22. 22 //指向下一个数据区的指针
  23. 23 struct node *Next;
  24. 24 };
  25. 25
  26. 26 /*Data content
  27. 27 class dataContent{
  28. 28 int key;
  29. 29 string name;
  30. 30 };*/
  31. 31
  32. 32
  33. 33 /*对连表操作的class*/
  34. 34 class myDataBase{
  35. 35 public:
  36. 36 //构造函数
  37. 37 myDataBase();
  38. 38 //析构函数
  39. 39 ~myDataBase();
  40. 40 //创建链表
  41. 41 void createDataBaseList();
  42. 42 //show连表里面的数据
  43. 43 void ShowDataBaseList();
  44. 44 //数据的尾部插入操作
  45. 45 bool InsertListDataTail(int data,std::string & name);
  46. 46 //获取类的句柄
  47. 47 static myDataBase& GetInstance();
  48. 48
  49. 49 private:
  50. 50 //定义了头节点
  51. 51 node *pNode;
  52. 52 };
  53. 53
  54. 54 #endif
  1.  

myDataBase.cpp


  1. 1 #include "myDataBase.h"
  2. 2
  3. 3 myDataBase::myDataBase()
  4. 4 {
  5. 5 pNode = NULL;
  6. 6 }
  7. 7
  8. 8 void myDataBase::createDataBaseList()
  9. 9 {
  10. 10 pNode = new node;
  11. 11
  12. 12 pNode->data.key=0;
  13. 13 pNode->Next = NULL;
  14. 14
  15. 15 return ;
  16. 16 }
  17. 17
  18. 18
  19. 19 bool myDataBase::InsertListDataTail(int data, std::string & name)
  20. 20 {
  21. 21 node * subNode = new node;
  22. 22 if(subNode == NULL)
  23. 23 {
  24. 24 cout<< "subNode create error!"<<endl;
  25. 25
  26. 26 return false;
  27. 27 }
  28. 28
  29. 29 subNode->data.key = data;
  30. 30 subNode->data.name = name;
  31. 31 subNode->Next = NULL;
  32. 32
  33. 33 node *temNode = pNode;
  34. 34
  35. 35 while(temNode->Next != NULL)
  36. 36 {
  37. 37 temNode = temNode->Next;
  38. 38 }
  39. 39
  40. 40 temNode->Next = subNode;
  41. 41
  42. 42 return true;
  43. 43 }
  44. 44
  45. 45
  46. 46 void myDataBase::ShowDataBaseList()
  47. 47 {
  48. 48 node * tempNode = pNode;
  49. 49 if(tempNode == NULL)
  50. 50 {
  51. 51 return ;
  52. 52 }
  53. 53
  54. 54 do{
  55. 55 if( (tempNode = tempNode->Next ) == NULL )
  56. 56 {
  57. 57 break;
  58. 58 }
  59. 59 else
  60. 60 {
  61. 61 cout<<"key: "<<tempNode->data.key<<"\t name :"<<tempNode->data.name<<endl;
  62. 62 }
  63. 63 }while(tempNode->Next);
  64. 64
  65. 65 return ;
  66. 66 }
  67. 67
  68. 68
  69. 69 static myDataBase *m_instance = NULL;
  70. 70
  71. 71 myDataBase &myDataBase::GetInstance()
  72. 72 {
  73. 73 if(m_instance == NULL)
  74. 74 {
  75. 75 m_instance = new myDataBase;
  76. 76 if(m_instance == NULL)
  77. 77 {
  78. 78 cout<< "create myDataBase class err!"<<endl;
  79. 79 exit(0);
  80. 80 }
  81. 81 }
  82. 82 return *m_instance;
  83. 83 }
  1. 1 运行结果显示
  2. 2 ****@****:~/桌面/myDataBaseList/myDataBaseList$ ./main
  3. 3 i
  4. 4 love
  5. 5 u
  6. 6 key: 0 name :i
  7. 7 key: 1 name :love
  8. 8 key: 2 name :u
  9. 9 zhou_jiang@zhoujiang:

C++实现链表---可直接运行通过的更多相关文章

  1. 深度剖析linux内核万能--双向链表,Hash链表模版

    我们都知道,链表是数据结构中用得最广泛的一种数据结构,对于数据结构,有顺序存储,数组就是一种.有链式存储,链表算一种.当然还有索引式的,散列式的,各种风格的说法,叫法层出不穷,但是万变不离其中,只要知 ...

  2. 图解Java数据结构之单链表

    本篇文章介绍数据结构中的单链表. 链表(Linked List)介绍 链表可分为三类: 单链表 双向链表 循环列表 下面具体分析三个链表的应用. 单链表 链表是有序的列表,它在内存中存储方式如下: 虽 ...

  3. [代码记录] C语言链表

    #开始 · 简单的创建链表 #代码 #include<conio.h> #include<stdio.h> #include<stdlib.h> struct St ...

  4. 【Weiss】【第03章】练习3.11:比较单链表递归与非递归查找元素

    [练习3.11] 编写查找一个单链表特定元素的程序.分别用递归和非递归实现,并比较它们的运行时间. 链表必须达到多大才能使得使用递归的程序崩溃? Answer: 实现都是比较容易的,但是实际上查找链表 ...

  5. Contiki-一个进程的例子

    进程调度器 进程调度器的作用是调用进程.进程调度器通过调用实现进程线程的函数来调用进程.Contiki中所有的进程被设计为响应传递到进程中的事件,或者相应进程请求的轮询.进程调度器在调度进程的时候会将 ...

  6. [HDU1017]Exact cover[DLX][Dancing Links详解][注释例程学习法]

    Dancing Links解决Exact Cover问题. 用到了循环双向十字链表. dfs. 论文一知半解地看了一遍,搜出一篇AC的源码,用注释的方法帮助理解. HIT ACM 感谢源码po主.链接 ...

  7. HashMap 底层算法分析

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp72 Hash算法HashMap使用Hash算法,所以在解剖HashMap ...

  8. 理解channel 工作原理以及源码

    Go 的并发特性  goroutines: 独立执行每个任务,并可能并行执行 channels: 用于 goroutines 之间的通讯.同步 一个简单的事务处理的例子  对于下面这样的非并发的程序: ...

  9. 【Java集合系列五】HashMap解析

    2017-07-31 19:36:00 一.简介 1.HashMap作用及使用场景 HashMap利用数组+单向链表的方式,实现了key-value型数据的存储功能.HashMap的size永远是2^ ...

随机推荐

  1. 替换unimrcp的VAD模块

    摘要: unimrcp vad 模块voice activity dector一直认为比较粗暴,而且unimrcp的社区也很久没有更新了.使用原始unimrcp如果只是用来做Demo演示,通过手动调整 ...

  2. SpringCloud Alibaba Nacos 服务注册

    业务服务接入Nacos服务治理中心 启动Nacos访问地址为:http://101.200.201.195:8848/nacos/ 创建bom工程用于管理依赖(下方附加源码地址) 准备工作完成后开始接 ...

  3. 51,N皇后

    from typing import List# 这道题还是比较经典的深搜递归调用的问题.# 只需要保证二维列表的每一行,每一列,每一对角线只有一个皇后就好了.class Solution: def ...

  4. webpack跨域配置处理

    打开config->index.js 配置其中的proxyTable module.exports = { dev: { // Paths assetsSubDirectory: 'static ...

  5. Spring security OAuth2.0认证授权学习第四天(SpringBoot集成)

    基础的授权其实只有两行代码就不单独写一个篇章了; 这两行就是上一章demo的权限判断; 集成SpringBoot SpringBoot介绍 这个篇章主要是讲SpringSecurity的,Spring ...

  6. H5选择器

    1.标签选择器 注意点:1. 标签选择器选中当前所有的标签,而不能单独选择某个标签 2.标签选择器不无多深都能被选中     3.只要是HTML中的标签就可以作为表亲啊选择器(h/a/img/ul/o ...

  7. 上传文件到服务器指定位置 & 从服务器指定位置下载文件

    需要的jar包: 去maven仓库自己搜索com.jcraft下载jar包 <dependency> <groupId>com.jcraft</groupId> & ...

  8. 浏览器调试的必知必会,零基础足够详细-第一节console面板、移动端调试

    前言 本文已经发布视频点击查看 开发过程中,浏览器的调试非常重要,可以说是必备的技巧,本文我就会分享一些自己掌握的技巧,欢迎补充 我们默认使用Chrome浏览器,但是你使用新edge浏览器也是可以的 ...

  9. YOLOv4: Darknet 如何于 Docker 编译,及训练 COCO 子集

    YOLO 算法是非常著名的目标检测算法.从其全称 You Only Look Once: Unified, Real-Time Object Detection ,可以看出它的特性: Look Onc ...

  10. 痞子衡嵌入式:IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞问题的分析解决经验. 事情缘起恩智浦官方论坛上的一 ...