C++实现链表---可直接运行通过
- main.cpp
1 #include "myDataBase.h"- 2
- 3 int main()
- 4 {
- 5 int i =0;
- 6 myDataBase::GetInstance().createDataBaseList();
- 7 for(i=0;i<3 ; ++i)
- 8 {
- 9 string str;
- 10 cin >> str;
- 11 myDataBase::GetInstance().InsertListDataTail(i,str);
- 12 }
- 13 myDataBase::GetInstance().ShowDataBaseList();
- 14
- 15 return 0;
- 16 }
myDataBase.h
- 1 #ifndef _MYDATABASE_H
- 2 #define _MYDATABASE_H
- 3
- 4 #include <cstddef>//NULL 需要使用的头文件
- 5 #include <iostream>
- 6 #include <strings.h>
- 7 using namespace std;
- 8
- 9 //Data content
- 10 class dataContent{
- 11 public:
- 12 int key;
- 13 string name;
- 14 };
- 15
- 16 /*存储连表的class*/
- 17 class node{
- 18 public:
- 19 //数据
- 20 dataContent data ;
- 21 //int data;
- 22 //指向下一个数据区的指针
- 23 struct node *Next;
- 24 };
- 25
- 26 /*Data content
- 27 class dataContent{
- 28 int key;
- 29 string name;
- 30 };*/
- 31
- 32
- 33 /*对连表操作的class*/
- 34 class myDataBase{
- 35 public:
- 36 //构造函数
- 37 myDataBase();
- 38 //析构函数
- 39 ~myDataBase();
- 40 //创建链表
- 41 void createDataBaseList();
- 42 //show连表里面的数据
- 43 void ShowDataBaseList();
- 44 //数据的尾部插入操作
- 45 bool InsertListDataTail(int data,std::string & name);
- 46 //获取类的句柄
- 47 static myDataBase& GetInstance();
- 48
- 49 private:
- 50 //定义了头节点
- 51 node *pNode;
- 52 };
- 53
- 54 #endif
myDataBase.cpp
1 #include "myDataBase.h"- 2
- 3 myDataBase::myDataBase()
- 4 {
- 5 pNode = NULL;
- 6 }
- 7
- 8 void myDataBase::createDataBaseList()
- 9 {
- 10 pNode = new node;
- 11
- 12 pNode->data.key=0;
- 13 pNode->Next = NULL;
- 14
- 15 return ;
- 16 }
- 17
- 18
- 19 bool myDataBase::InsertListDataTail(int data, std::string & name)
- 20 {
- 21 node * subNode = new node;
- 22 if(subNode == NULL)
- 23 {
- 24 cout<< "subNode create error!"<<endl;
- 25
- 26 return false;
- 27 }
- 28
- 29 subNode->data.key = data;
- 30 subNode->data.name = name;
- 31 subNode->Next = NULL;
- 32
- 33 node *temNode = pNode;
- 34
- 35 while(temNode->Next != NULL)
- 36 {
- 37 temNode = temNode->Next;
- 38 }
- 39
- 40 temNode->Next = subNode;
- 41
- 42 return true;
- 43 }
- 44
- 45
- 46 void myDataBase::ShowDataBaseList()
- 47 {
- 48 node * tempNode = pNode;
- 49 if(tempNode == NULL)
- 50 {
- 51 return ;
- 52 }
- 53
- 54 do{
- 55 if( (tempNode = tempNode->Next ) == NULL )
- 56 {
- 57 break;
- 58 }
- 59 else
- 60 {
- 61 cout<<"key: "<<tempNode->data.key<<"\t name :"<<tempNode->data.name<<endl;
- 62 }
- 63 }while(tempNode->Next);
- 64
- 65 return ;
- 66 }
- 67
- 68
- 69 static myDataBase *m_instance = NULL;
- 70
- 71 myDataBase &myDataBase::GetInstance()
- 72 {
- 73 if(m_instance == NULL)
- 74 {
- 75 m_instance = new myDataBase;
- 76 if(m_instance == NULL)
- 77 {
- 78 cout<< "create myDataBase class err!"<<endl;
- 79 exit(0);
- 80 }
- 81 }
- 82 return *m_instance;
- 83 }
- 1 运行结果显示
- 2 ****@****:~/桌面/myDataBaseList/myDataBaseList$ ./main
- 3 i
- 4 love
- 5 u
- 6 key: 0 name :i
- 7 key: 1 name :love
- 8 key: 2 name :u
- 9 zhou_jiang@zhoujiang:
C++实现链表---可直接运行通过的更多相关文章
- 深度剖析linux内核万能--双向链表,Hash链表模版
我们都知道,链表是数据结构中用得最广泛的一种数据结构,对于数据结构,有顺序存储,数组就是一种.有链式存储,链表算一种.当然还有索引式的,散列式的,各种风格的说法,叫法层出不穷,但是万变不离其中,只要知 ...
- 图解Java数据结构之单链表
本篇文章介绍数据结构中的单链表. 链表(Linked List)介绍 链表可分为三类: 单链表 双向链表 循环列表 下面具体分析三个链表的应用. 单链表 链表是有序的列表,它在内存中存储方式如下: 虽 ...
- [代码记录] C语言链表
#开始 · 简单的创建链表 #代码 #include<conio.h> #include<stdio.h> #include<stdlib.h> struct St ...
- 【Weiss】【第03章】练习3.11:比较单链表递归与非递归查找元素
[练习3.11] 编写查找一个单链表特定元素的程序.分别用递归和非递归实现,并比较它们的运行时间. 链表必须达到多大才能使得使用递归的程序崩溃? Answer: 实现都是比较容易的,但是实际上查找链表 ...
- Contiki-一个进程的例子
进程调度器 进程调度器的作用是调用进程.进程调度器通过调用实现进程线程的函数来调用进程.Contiki中所有的进程被设计为响应传递到进程中的事件,或者相应进程请求的轮询.进程调度器在调度进程的时候会将 ...
- [HDU1017]Exact cover[DLX][Dancing Links详解][注释例程学习法]
Dancing Links解决Exact Cover问题. 用到了循环双向十字链表. dfs. 论文一知半解地看了一遍,搜出一篇AC的源码,用注释的方法帮助理解. HIT ACM 感谢源码po主.链接 ...
- HashMap 底层算法分析
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp72 Hash算法HashMap使用Hash算法,所以在解剖HashMap ...
- 理解channel 工作原理以及源码
Go 的并发特性 goroutines: 独立执行每个任务,并可能并行执行 channels: 用于 goroutines 之间的通讯.同步 一个简单的事务处理的例子 对于下面这样的非并发的程序: ...
- 【Java集合系列五】HashMap解析
2017-07-31 19:36:00 一.简介 1.HashMap作用及使用场景 HashMap利用数组+单向链表的方式,实现了key-value型数据的存储功能.HashMap的size永远是2^ ...
随机推荐
- 替换unimrcp的VAD模块
摘要: unimrcp vad 模块voice activity dector一直认为比较粗暴,而且unimrcp的社区也很久没有更新了.使用原始unimrcp如果只是用来做Demo演示,通过手动调整 ...
- SpringCloud Alibaba Nacos 服务注册
业务服务接入Nacos服务治理中心 启动Nacos访问地址为:http://101.200.201.195:8848/nacos/ 创建bom工程用于管理依赖(下方附加源码地址) 准备工作完成后开始接 ...
- 51,N皇后
from typing import List# 这道题还是比较经典的深搜递归调用的问题.# 只需要保证二维列表的每一行,每一列,每一对角线只有一个皇后就好了.class Solution: def ...
- webpack跨域配置处理
打开config->index.js 配置其中的proxyTable module.exports = { dev: { // Paths assetsSubDirectory: 'static ...
- Spring security OAuth2.0认证授权学习第四天(SpringBoot集成)
基础的授权其实只有两行代码就不单独写一个篇章了; 这两行就是上一章demo的权限判断; 集成SpringBoot SpringBoot介绍 这个篇章主要是讲SpringSecurity的,Spring ...
- H5选择器
1.标签选择器 注意点:1. 标签选择器选中当前所有的标签,而不能单独选择某个标签 2.标签选择器不无多深都能被选中 3.只要是HTML中的标签就可以作为表亲啊选择器(h/a/img/ul/o ...
- 上传文件到服务器指定位置 & 从服务器指定位置下载文件
需要的jar包: 去maven仓库自己搜索com.jcraft下载jar包 <dependency> <groupId>com.jcraft</groupId> & ...
- 浏览器调试的必知必会,零基础足够详细-第一节console面板、移动端调试
前言 本文已经发布视频点击查看 开发过程中,浏览器的调试非常重要,可以说是必备的技巧,本文我就会分享一些自己掌握的技巧,欢迎补充 我们默认使用Chrome浏览器,但是你使用新edge浏览器也是可以的 ...
- YOLOv4: Darknet 如何于 Docker 编译,及训练 COCO 子集
YOLO 算法是非常著名的目标检测算法.从其全称 You Only Look Once: Unified, Real-Time Object Detection ,可以看出它的特性: Look Onc ...
- 痞子衡嵌入式:IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞问题的分析解决经验. 事情缘起恩智浦官方论坛上的一 ...