#include<iostream>
#include<string>
#define SIZE 3
using std::cout;
using std::endl;
using std::string; class MyClass{
public:
struct DataInfo{
int age;
string name;
};
private:
struct Queue{
DataInfo dataInfo;
Queue *front;
Queue *next;
};
private:
Queue *head, *tail; public:
inline Queue* CreateNode()
{
Queue *node;
node = new Queue;
return node;
}
inline void InsertNode(DataInfo dataInfo)//采用头插法
{
Queue *pNode;
pNode = CreateNode();
pNode->dataInfo = dataInfo;
pNode->next = head->next;
head->next->front = pNode;
head->next = pNode;
pNode->front = head;
}
inline void DeleteNode()//采用头删法
{
Queue *pNode;
pNode = head->next;
head->next = pNode->next;
pNode->next->front = head; }
inline void InitinalQueue()
{
head = CreateNode();
tail = CreateNode();
head->next = tail;
head->front = NULL;
tail->front = head;
tail->next = NULL;
}
inline void OutputQueue()
{
Queue *pNode;
pNode = head->next;
do{
cout << pNode->dataInfo.age <<" "<< pNode->dataInfo.name << endl;
pNode = pNode->next;
} while (pNode!=tail);
}
inline void FreeSpace()//释放空间
{
Queue *pNode;
pNode = head->next;
while (pNode != NULL)
{
delete pNode->front;
pNode = pNode->next;
}
delete tail;
}
};
void main()
{
MyClass myClass;
myClass.InitinalQueue();
MyClass::DataInfo dataInfo[SIZE];
dataInfo[].age = ;
dataInfo[].name = "436酱油哥"; dataInfo[].age = ;
dataInfo[].name = "436酱油哥"; dataInfo[].age = ;
dataInfo[].name = "436酱油哥"; myClass.InsertNode(dataInfo[]);
myClass.InsertNode(dataInfo[]);
myClass.InsertNode(dataInfo[]); myClass.OutputQueue();
myClass.FreeSpace();//释放new 占用的空间 system("pause");
}

链表是非常重要的 我们经常会用到,所以熟练的掌握有助实现!

链表使用的自我理解概念:

链表在物理地址逻辑相邻物理不相邻,有单链表,循环链表,双向链表,实现起来大同小异,主要是熟练掌握指针的使用。链表的节点数据部分可以是变量,数组,结构体,容器等。

c/c++链表的实现的更多相关文章

  1. Redis链表实现

    链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层 ...

  2. [数据结构]——链表(list)、队列(queue)和栈(stack)

    在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...

  3. 排序算法----基数排序(RadixSort(L))单链表智能版本

    转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...

  4. 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结

    防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...

  5. 时间复杂度分别为 O(n)和 O(1)的删除单链表结点的方法

    有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点. 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和 ...

  6. C语言之链表list

    #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h& ...

  7. 单链表的C++实现(采用模板类)

    采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作.  链表结构定义 定义单链表 ...

  8. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  9. 用JavaScript来实现链表LinkedList

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文地址. 写在前面 好多做web开发的朋友,在学习数据结构和算法时可能比较讨厌C和C++,上学的时候写过的也忘得差不多了,更别提没写过的了.但幸运 ...

  10. 数据结构:队列 链表,顺序表和循环顺序表实现(python版)

    链表实现队列: 尾部 添加数据,效率为0(1) 头部 元素的删除和查看,效率也为0(1) 顺序表实现队列: 头部 添加数据,效率为0(n) 尾部 元素的删除和查看,效率也为0(1) 循环顺序表实现队列 ...

随机推荐

  1. avl 平衡搜索二叉树的旋转图示

    avl树的平衡是通过旋转不平衡子树完成的,旋转是如何完成的?这有幅不错的图http://upload.wikimedia.org/wikipedia/en/1/15/Tree_Rotations.gi ...

  2. 【转】python通过文件头判断文件类型

    刚刚看到一个好玩的程序,拉过来.原文地址:https://www.ttlsa.com/python/determine-file-type-by-the-file-header/ 侵权删. ===== ...

  3. mac zsh 快捷定位文件

    brew install zsh vim ~/.zshrc plugins=(git autojump zsh-autosuggestions zsh-syntax-highlighting yarn ...

  4. UVA10820 Send a Table

    嘟嘟嘟 [欧拉函数] 大致题意:如果知道f(a, b),就可以求出f(a * k, b * k).现给出一个n,求至少需要知道几个二元组(a, b),使所有的f(x, y)都能求出来.(1 <= ...

  5. xampp安装及使用时的问题总结

    本文主要介绍易错点,具体安装过程可参考链接1 1.首先要以管理员身份运行,否则报错. 2.如果你的网站首页名字不是index,那么你在访问的时候就必须输入你首页的全称. 3.htdocs就是网站的根目 ...

  6. Mabatis入门案例

    log4j.properties # Global logging configuration #\u5728\u5f00\u53d1\u9636\u6bb5\uff0c\u8bbe\u7f6e\u4 ...

  7. SpringMVC关于请求参数乱码问题

    String names =request.getParameter("name") request主要接收的参数是form提交 form提交有的时候会伴随着乱码,该乱码的格式为I ...

  8. [转]超全面的.NET GDI+图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ GDI+绘图基础 编写图形程序时需要使用GDI(Gr ...

  9. PAT——1016. 部分A+B

    正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA.例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6. 现给定A.DA.B.DB,请编 ...

  10. [转] 有关java中两个整数的交换问题

    转载申明:本文主要是用于自己学习使用,为了完善自己的只是框架,没有任何的商业目的. 原文来源:有关Java中两个整数的交换问题 如果侵权,麻烦告之,立刻删除. 在程序开发的过程,要交换两个变量的内容, ...