数据结构
假老练啊哦
男性最大的魅力是幽默
展开
-
顺序表的基本操作
#include<iostream>using namespace std; //#define MaxSize 10; 使用define的时候后面没有 ;//#define ElemType ElemType ; //数据类型修改别名的时候用typedef 并且是定义数组类型成新的别名 ElemType ->newType#define MaxSize 1...原创 2018-09-23 11:29:07 · 1309 阅读 · 0 评论 -
计数排序
计数排序是一种线性排序算法,不需要进行比较,时间复杂度为O(n)。它利用了一个数组,因为数组下标的增长是线性的,所以它就把自己的元素转换成新开辟数组的下标。可是下标都是非负数啊?数组当中的值有正有负啊。做一个简单的转化就行了:找到数组中最小元素,用元素值减去,这样一来,所有元素对应的下标就求出来了。(实际上感觉像是个映射函数?)下图中保存的是待排序数组:[-1,-5,-6,-2,1,2,8,2...原创 2019-05-30 21:38:51 · 9229 阅读 · 3 评论 -
把字符串中的单词首字母变成大写
总结:用有穷状态自动机写了个程序,算是对它的复习吧!~其实也是想试试。学到东西还是挺多的,flag标志来控制是否的变成大写,以及对非字符的处理状态" NOUP ",对字符的处理“UP”又分两类“大写”和“小写”。#include<iostream>#include<string>#include<cctype>using namespace std;...原创 2018-11-25 14:16:17 · 1321 阅读 · 0 评论 -
队列
队列的定义:队列是只允许在一段进行插入操作,在另一端进行删除操作的线性表。队列是一种先进先出(first in first out)的线性表,简称FIFO。允许插入的一段称为队尾,允许删除的一段称为队头。队列顺序存储:队头不需要一定在下标为0的位置。假溢出:数组尾元素已经占用,在向后添加,就会产生数组越界的错误。解决假溢出的方法:后面填满了就从头开始,头尾相连的循环。...原创 2018-10-22 08:48:59 · 147 阅读 · 0 评论 -
栈的顺序存储结构和链式存储结构
1.栈的定义:在表尾进行插入和删除操作的线性表(仍然满足线性表的操作,只是在push和pop有些区别)栈顶(top)允许插入和删除,另一端称栈底(bottom),不含任何数据元素的栈叫空栈。栈:后进先出(last in first out)的线性表,简称LIFO结构。栈的插入称为进栈,也称压栈,入栈。栈的删除称为出栈,也称弹栈。2.栈的抽象数据结构 因为栈本身就是一个...原创 2018-10-10 08:15:09 · 5234 阅读 · 0 评论 -
单链表
1.初始化 指针定义了之后需要初始化 否则成为野指针,"0xcdcdcdcd.."代表指针没有初始化2.什么时候使用一级指针/二级指针 ->1.不对头结点修改 (使用一级指针) 如链表的增删改查,带头结点的对链表创建(头插法尾插法) ->2.对头结点修改 (使用二级指针) 如链表的初始化,整表的删除。不带头结点的对链表创建。3.头插法和尾插法创建链表 (1...原创 2018-09-27 21:10:42 · 219 阅读 · 0 评论 -
c++二级指针
#include<iostream>using namespace std; int a = 3; int M = 5;/*使用一级指针 不能修改 指针的指向void changePointer(int* p){ p = &M ;}*/void changePointer(int** p){ cout<<"p的地址是:"<<...原创 2018-09-25 20:31:14 · 752 阅读 · 0 评论 -
排序算法稳定性的问题
稳定性指的是原本排在前面的元素,排序后仍然保持在前面,如下,第一个5和第二个5如果是稳定排序的话,两者之间的相对位置仍然保持不变。待排序的数组:3,1,9,5,5,8,4。把第一个5记作A,第二个5记作B。如果是稳定排序,那么排序后结果为:1,3,4,A,B,8,9如果是不稳定排序,那么排序后结果为:1,3,4,B,A,8,9这点看起来好像没啥不一样的,因为反正两个元素值是相同的,...原创 2019-09-05 22:10:43 · 365 阅读 · 0 评论