c/c++链表的实现
#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++链表的实现的更多相关文章
- Redis链表实现
链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层 ...
- [数据结构]——链表(list)、队列(queue)和栈(stack)
在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...
- 排序算法----基数排序(RadixSort(L))单链表智能版本
转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...
- 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结
防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...
- 时间复杂度分别为 O(n)和 O(1)的删除单链表结点的方法
有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点. 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和 ...
- C语言之链表list
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h& ...
- 单链表的C++实现(采用模板类)
采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作. 链表结构定义 定义单链表 ...
- 学习javascript数据结构(二)——链表
前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...
- 用JavaScript来实现链表LinkedList
本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文地址. 写在前面 好多做web开发的朋友,在学习数据结构和算法时可能比较讨厌C和C++,上学的时候写过的也忘得差不多了,更别提没写过的了.但幸运 ...
- 数据结构:队列 链表,顺序表和循环顺序表实现(python版)
链表实现队列: 尾部 添加数据,效率为0(1) 头部 元素的删除和查看,效率也为0(1) 顺序表实现队列: 头部 添加数据,效率为0(n) 尾部 元素的删除和查看,效率也为0(1) 循环顺序表实现队列 ...
随机推荐
- avl 平衡搜索二叉树的旋转图示
avl树的平衡是通过旋转不平衡子树完成的,旋转是如何完成的?这有幅不错的图http://upload.wikimedia.org/wikipedia/en/1/15/Tree_Rotations.gi ...
- 【转】python通过文件头判断文件类型
刚刚看到一个好玩的程序,拉过来.原文地址:https://www.ttlsa.com/python/determine-file-type-by-the-file-header/ 侵权删. ===== ...
- mac zsh 快捷定位文件
brew install zsh vim ~/.zshrc plugins=(git autojump zsh-autosuggestions zsh-syntax-highlighting yarn ...
- UVA10820 Send a Table
嘟嘟嘟 [欧拉函数] 大致题意:如果知道f(a, b),就可以求出f(a * k, b * k).现给出一个n,求至少需要知道几个二元组(a, b),使所有的f(x, y)都能求出来.(1 <= ...
- xampp安装及使用时的问题总结
本文主要介绍易错点,具体安装过程可参考链接1 1.首先要以管理员身份运行,否则报错. 2.如果你的网站首页名字不是index,那么你在访问的时候就必须输入你首页的全称. 3.htdocs就是网站的根目 ...
- Mabatis入门案例
log4j.properties # Global logging configuration #\u5728\u5f00\u53d1\u9636\u6bb5\uff0c\u8bbe\u7f6e\u4 ...
- SpringMVC关于请求参数乱码问题
String names =request.getParameter("name") request主要接收的参数是form提交 form提交有的时候会伴随着乱码,该乱码的格式为I ...
- [转]超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ GDI+绘图基础 编写图形程序时需要使用GDI(Gr ...
- 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,请编 ...
- [转] 有关java中两个整数的交换问题
转载申明:本文主要是用于自己学习使用,为了完善自己的只是框架,没有任何的商业目的. 原文来源:有关Java中两个整数的交换问题 如果侵权,麻烦告之,立刻删除. 在程序开发的过程,要交换两个变量的内容, ...