数据结构
zwz2011303359
这个作者很懒,什么都没留下…
展开
-
成绩排序算法
#include#include#include#includeusing namespace std;struct stu{ string name; int grade;};bool studes(stu a, stu b){ return a.grade > b.grade;}bool stuAcs(stu a, stu b){原创 2017-03-28 22:02:07 · 698 阅读 · 0 评论 -
采用头插法和尾插法建立单链表
面说一下如果用C语言建立单链表,分为头插法和尾插法两种。 采用头插法建立单链表该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图2-4所示。图2-4 头插法建立单链表头插法建立单链表的算法如下:复制纯文本复制LinkList CreatList1(LinkList &原创 2017-03-17 15:25:50 · 30699 阅读 · 0 评论 -
数据的逻辑结构和数据的存储结构
1. 数据的逻辑结构 数据的逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的。数据的逻辑结构分为线性结构和非线性结构,线性表是典型的线性结构;集合、树和图是典型的非线性结构。数据的逻辑结构分类见图1-1。集合结构中的数据元素之间除了 “同属于一个集合”的关系外,别无其他关系。线性结构结构中的数据元素之间只存在一对一的关系。树原创 2017-03-17 14:34:58 · 5854 阅读 · 0 评论 -
判断一个链表是否有环以及长度
判断一个单链表是否有环及环的链接点(转)(2011-09-16 10:24:10)转载▼ 分类: 学习笔记给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fas原创 2017-03-17 00:55:41 · 783 阅读 · 0 评论 -
struct和typedef struct的区别
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是原创 2017-03-16 22:23:14 · 290 阅读 · 0 评论 -
虚函数代码举例
#include <iostream>#include <string>using namespace std;class A{public: virtual void f() { cout<<"A"<<endl; }};class B:public A{public: virtual void f() {原创 2017-04-12 20:20:12 · 507 阅读 · 0 评论 -
给出一个单链表如何只遍历一次就找出中间节点(我们并不知道单链表的长度N)
实现方法:我们可以设置两个指针变量,node *p ,node *q,p每次移动两个位置,q每次移动一个位置,当p.next==null时候,这时候q指针就到了链表的中间位置。 实现代码如下:void search(node *head,node *mid){ node *temp=head; while(head->next->next!=NULL) {原创 2017-04-13 20:46:48 · 3738 阅读 · 2 评论 -
链表介绍
介绍 链表是一种物理储存单元上非连续、非顺序的储存结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。和顺序表的区别: 顺序表使用数组存储线形的元素,其特点是可以随机存取,但是,因为逻辑上相邻的元素物理上也相邻,...转载 2018-04-17 00:40:33 · 454 阅读 · 0 评论 -
C++链表基本操作
一、先定义好链表的节点结构template<class DataType>struct pNode{ DataType data; pNode<DataType>* next; pNode(DataType d = 0) :data(d), next(NULL) //在c++中可以在结构中写构造函数 {}};二、链表的基本操作1.链表的构造tem...转载 2018-04-17 00:51:33 · 1258 阅读 · 0 评论 -
有效IP识别
请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255; D类地址224.0.0...原创 2018-07-18 16:38:26 · 878 阅读 · 0 评论 -
单链表的插入和删除操作
文件功能:实现了动态建立一个学生信息的链表包括链表的创建、插入、删除、和打印输出学生信息包括姓名和分数本链表是带有头结点的,头结点的内容为空内容-----------------------------------------------------------------------------*//*-------------------------包含头文件---------原创 2017-03-17 15:51:40 · 6063 阅读 · 0 评论 -
图的三种表示方法
图的表示最长用的两种方法是:1)、邻接矩阵表示法2)、邻接表表示下面是两种构造图的方法1)邻接矩阵:[cpp] view plain copyprint?#include #include using namespace std; //枚举类型,图的种类 DG:有向图;WDG:带权值的有向图; //UDG: 无原创 2017-03-18 14:20:44 · 3092 阅读 · 0 评论 -
数据结构面试题
由于这些题,实在太火了。所以,应广大网友建议要求,在此把之前已整理公布的前80题, 现在,一次性分享出来。此也算是前80题第一次集体亮相。 此些题,已有上万人,看到或见识到,若私自据为己有,必定为有知之人识破,付出代价。 所以,作者声明: 本人July对以上所有任何内容和资料享有版权,转载请注明作者本人July出处。 向你的厚道致敬。谢谢。 1.把转载 2017-04-08 00:43:58 · 634 阅读 · 0 评论 -
二分查找(C++实现)
int BinarySearch(int *a,const int x,const int left,const int right){ if(left<=right) { int middle=(left+right)/2; if(x<middle) return BinarySearch(a,x,left,middle-1原创 2017-04-08 00:45:25 · 237 阅读 · 0 评论 -
元素全排列递归实现(C++)
基本思想:对n个元素的全排列,我们可以先进行第一个元素和剩下的n-1个元素进行分别交换然后对剩下的n-1个元素全排列。 for(int i=k;i<=m;i++) { swap(c[k],c[i]); Permutation(c,k+1,m); swap(c[k],c[i]); }原创 2017-04-08 01:09:13 · 397 阅读 · 0 评论 -
斐波那契函数非递归实现(C++实现)
int Fibonacci(int n){ if(n<=1) cout<<n<<endl; else { int sum=0,f1=0,f2=1; for(int i=2;i<=n;i++) { sum=f1+f2; f1=f2; f2=s原创 2017-04-08 01:17:26 · 725 阅读 · 0 评论 -
stack的简单用法举例(C++实现)
int main() { stack<int> stack1; for(int i=0;i<5;i++) stack1.push(i); while (!stack1.empty()) { cout<<" "<<stack1.top(); stack1.pop(); } return 0;}结果为: 4原创 2017-04-08 20:42:02 · 537 阅读 · 0 评论 -
c++实现二叉树的插入和三种遍历算法
include using namespace std; struct TreeNode{ int value; TreeNode *left;//左子树 TreeNode *right;//右 TreeNode(int x) :value(x),left(nullptr),right(nullptr){};}; void Insort(int value原创 2017-03-30 14:53:40 · 480 阅读 · 0 评论 -
http协议讲解
一. HTTP协议的应用简单概况HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP**允许传输任意类型的数据对象**。正在传输的类型由Conten转载 2017-03-26 20:36:29 · 189 阅读 · 0 评论 -
hash函数以及冲突处理
最常用的3个HASH函数:1. 除法散列法:通过取k除以m的余数,来将关键字k映射到m个槽的某一个中去,即散列函数为: h(k) = k mod m2. 乘法散列法:首先,用关键字k乘上常数A(0 h(k) = ⌊m(kA mod 1)⌋3.全域散列法(universal hashing) 4平方取中法5.折叠法解决冲突常用的两种方法:原创 2017-03-18 19:57:29 · 240 阅读 · 0 评论 -
B+树的插入和删除
M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2): 图1.1 3阶B+树 (1)根结点只有1个,分支数量范围[2,m]。 (2)除根以外的非叶子结点,每个结点包含分支数范围[[m/2],m],其中[m/2]表示取大于m/2的最小整数。一, M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2):图1.1原创 2017-03-18 19:39:33 · 367 阅读 · 0 评论 -
复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 三步 法 链接:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba来...原创 2018-07-28 00:27:13 · 173 阅读 · 0 评论