线性表中,先进先出的叫队列,先进后出的叫栈。队列常用于BFS,而在函数递归层数过高时,需要手动实现递归过程,这时候便需要写一个“手动栈”。 有时候,我们会有大量数据频繁出入队列,但同时存在其内的元素却不多,此时需要写“循环队列”。其代码并不难,但里面下标递增的语句值得斟酌一下。k=(k+1)%maxn; 这句话用到了取模运算%,是非常浪费时间的。若能避免使用%,则可以大大提高代码运行速度。我做了一个测...
广义表,相对于链表较复杂,相对于树又较简单....用来过渡顺序表和树是非常好的选择. 废话不多说,一言不合就贴代码./*
*文件说明:广义表相关声明及定义
*作者:高小调
*日期:2016-12-12
*集成开发环境:Microsoft Visual Studio 2010
*/
#ifndef __GENERALLIST_H__
#define __GENERALLIST_H__
#include<assert.h>
enum Type{HEAD,SUB,VALUE
};
struct GeneralListNode{Type type;union{char value;GeneralListNode *sublink;};Gene...
#ifndef __MY_SEQLIST_H__
#define __MY_SEQLIST_H__typedef void SeqList;
typedef void SeqListNode;//链表 创建
SeqList* SeqList_Create(int capacity);//链表 销毁void SeqList_Destroy(SeqList* list);////链表 清空void SeqList_Clear(SeqList* list);//链表 长度int SeqList_Length(SeqList* list);//链表 容量 int SeqList_Capacity(SeqList* list);//链表 在某一个位置 插入元素int SeqList_Insert(SeqList* list, Seq...
单链表的建立 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。输入以-1 作为结束 1 #include<bits/stdc++.h>2usingnamespace std;3 4 typedef struct LNode *List;5struct LNode6{7int data;8 LNode *next; 9 };
1011void InitList(List &L)
12{
13 L = new LNode;
14 L->next = NULL;
15}
1617void CreatList(List &L)
18{
19 List r,s;
20 s = L;
21int a;
22while(1...
#include <iostream>
#include <unordered_map>
usingnamespace std;
class Book
{
private:string num;string name;
public:Book() {};Book(string num,string name) { this ->name = name;this ->num = num;};string getNum() { return num;};string getName() { return name;};
};
int main()
{unordered_map<string,Book>lib;Book b("001","高级语言程序设计") ;lib[b.getNum()] = b;unordered_map<string,Book>::iterator it;...
T1 1806:词典描述你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。输入首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外语单词组成的文档,文档不超过100000行,而且每行只包括一个外语单词。...
1. 广义表的定义 每个元素可以为Atom,原子,也可以为线性表。 线性表的推广。线性表元素有唯一的前驱和后继,为线性表,而广义表是多层次的线性表 表头:第一个元素,可能是原子,可能是广义表 表尾:除了第一个元素,剩余的元素,所构成的广义表 举例: A = (a,b,(c,d),e) head(A) = a tail(A) = (b,(c,d),e) 遍历操作: 取表头,取表尾 ,取表头.. 长度:最外层的...
1)最长不重复子串使用string和vector<string>string FindLongestNonRepeatSubstring(string str)
{if (str.empty()) return"";string tmp;//存放临时不重复的子串vector<string> svec;//存放所有不重复的子串int start = 0;//标记每次开始查找子串的下标int pos = -1; //查找当前字符在子串中的位置下标tmp.push_back(str[0]);for (unsigned int i = 1; i < str.size(); ++i){pos = tmp.find(str[i]);if (pos == -1){tmp.push_bac...
数据结构(data stucture)的定义:数据结构由数据元素的集合和该集合中数据元素之间的关系组成。即{D,R}。线性结构,即线性表(linearlist). ---数组(array),文件,栈(stack),队列(queue),优先级队列非线性结构 ---集合,图C++类默认访问级别是privatestruct默认访问级别是 public 这可以说是他们的惟一区别。union默认访问级别也是 public流是个简单的字符序列cout<<endl; 输出一个换行符,并清空流。C++的输入输出:void main...
这里我们模拟一下银行排队叫号系统的实现:假设一个银行有4个窗口对外接待客户。由于每个窗口在某一时刻只能接待一个客户,在客户众多的时候需要排队,对于刚进入银行的客户,如果某个窗口正空闲,
则可上前办理业务,如果所有窗口都不空闲则排在人数最少的窗口。
现在要求模拟银行的某一时间段内的4个窗口的客户排队情况。这里客户到达的时刻和办理业务的时间都是随机的。首先我们银行发生事件,我们得有一个类表示事件对象/*
*功...
#pragma once
#ifndef _CLIST_H_
#define _CLIST_H_#include <iostream>
#include <assert.h>
using namespace std;template<class Type> class List;typedef enum { FALSE, TRUE }Status;template<class Type>
class ListNode
{friend class List<Type>;
public:ListNode() :data(Type()), next(NULL){}ListNode(Type d, ListNode<Type> *n = NULL): data(d), next(n){}~ListNode(){}void setData(const Type &d){data = d;}Type ...
C++数据结构——队列目录
1、简介
2、基本结构
3、基本操作简介像栈一样,队列也是一种线性表。它允许在表的一端插入数据,在另一端删除元素。插入元素的这一端称之为队尾。删除元素的这一端我们称之为队头,它的特点是先进先出。首先我们来思考一下队列这种数据结构使用什么表的创建方式比较好,是头插法?尾插法?之前我们有提到,队列在队头删除元素,在队尾插入元素,如果是头插法,那么在头结点这边进行插入,在另一边进行删除...
PS:资料来源慕课网视频。 一、什么是线性表线性表是n个数据元素的有限序列。 分类: 二、补充知识点1、栈和队列有出操作、入操作,对应线性表(数组)为插入元素和删除元素,而线性表中要获取指定元素值可直接使用getelem()函数,获取后并不删除元素,可重复获取。【与只能使用一次的栈、队列有区别】 2、顺序表:遍历和寻址非常快,插入、删除效率低。 3、《链表算法说明》课程评论:静态链表基于数组,动态链表基于结构体,所...
收集整理了c和c++从基础到进阶的视频教程,共26.4G,欢迎下载。至于学习c++要不要先学c的问题也是见仁见智,个人觉得在c语言的基础上学c++会更有效率一些。这套视频教程包含了c语言课程,麻油们可以根据自己的需要选择是否要先学c。创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀。也希望大家对学C++能够持之以恒C++爱好群,如果你想要学好C++最好加入一...
C++八股文分享—数据结构其二—哈希表
前言
什么是哈希表?
搜索二叉树对值的查找是通过从根节点开始,逐个节点与目标值做比较,向下查找,直至找到目标值或是到达根节点未查找到,时间复杂度为O(logn)。而哈希表,则是通过将value与key成对绑定,将key带入哈希函数,即可得到目标值的存放地址,从而得到目标值,在不考虑哈希冲突的情况下,时间复杂度为O(1)。 哈希表其实可以理解为一个特殊的数组。我们通常使用的数组,通过下标0...