数据结构--字符串
字符串一、定义1.C语言中
C语言中以结束字符\0结尾的字符数组表示字符串
字符串通常是通过字符数组或者字符指针来表示的。定义字符串的常见方式有:
12345// 使用字符数组定义字符串char str1[] = "Hello, World!";// 使用字符指针定义字符串char *str2 = "Hello, World!";
相关操作:
C语言标准库提供了一些处理字符串的函数,这些函数都在 <string.h> 头文件中定义
**strlen**:计算字符串的长度,不包括 '\0'
1int len = strlen(str1); // 返回字符串长度
**strcpy**:将一个字符串复制到另一个字符串中
12char dest[20];strcpy(dest, str1); // 将 str1 复制到 dest
**strcat**:将两个字符串连接在一起
1strcat(dest, str2); // 将 str2 连接到 dest 之后
**strcmp**:比较两个字符串的大小( ...
数据结构--栈
栈一、栈的顺序实现
使用连续的内存存储栈元素
1.SqStack.h123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101#pragma once#include "exception"/* * 栈的顺序实现 * 使用一块连续的内存实现 * 先入先出 * 只能在一端进行插入删除 */template <typename T>class SqStack{private: T *data; // 栈顶索引 int top_; int capacity;public: SqStack(int cap = 3) { data = new T[cap]; ...
数据结构--队列
队列
队列是一种线性的数据结构,其特点为先入先出FIFO
注意:在C++的标准模板库(STL)中,queue 是一个容器适配器,它是基于底层容器实现的。默认情况下,queue 是通过 std::deque 来实现的,但也可以通过其他序列容器(如 std::list)来实现
一、队列的顺序实现1.SqQueue.h
队列可实现自动扩容,当队列中内存不足时候,以原内存的2倍大小进行扩容
队列初始化:
队列初始化大小为capacity = 4
头指针front= 0,尾指针rear = 0,初始首尾指针均可以指向同一个位置
队列为空:rear == front
队列首部出队,首部指针后移:front = (front + 1) % capacity
队列尾部入队,尾部指针后移:rear = (rear + 1) % capacity
获取队列首部元素,返回:data[front]
获取队列尾部部元素,返回:data[(rear - 1 + capacity) % capacity]
1234567891011121314151617181920212223242526272 ...
数据结构--线性表
线性表一、顺序实现的线性表
顺序实现的线性表中,使用一段连续的内存进行存储数据
使用模板类实现顺序实现的线性表
1.SqList.h1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889#pragma once#include <exception>/* * 线性表的顺序实现 */template<typename T>class SqList{public: SqList(int cap = 100) { data = new T[cap]; if(!data) { throw "SqList 内存分配失败"; } ...
测试
测试
仓库链接:https://github.com/maxswordsman/HWEmbeddedSoftwareAlgorithm2024
本文主要是使用设计的算法,对初赛通过的两个测试用例进行测试计算得分:
testcase1.in:
算法策略
重规划总业务数
成功规划业务数
失败规划业务数
得分
BFS
3706
2330
1376
561971
DFS
3838
2288
1550
549855
BFS+DFS
3754
2517
1237
571832
重边BFS
3722
2392
1330
565832
重边BFS+DFS
3762
2551
1211
573580
重边BFS+DFS+其他优化
576406
3762
2583
576406
testcase2.in:
算法策略
重规划总业务数
成功规划业务数
失败规划业务数
得分
BFS
41186
37014
4172
8008810
DFS
45899
40587
5312
7794519
BFS+DFS
41472
38302
3170
808803 ...