该训练营为蓝蓝考研(蓝颜知己)的算法训练营内容,题目来源有经典算法题、408统考算法题等等。分为7weeks共计39days练习,每日一道算法题训练,涵盖基本顺序表、链表和二叉树相关的基础算法,以及部分408真题中数据结构部分的算法题,并未包含图相关的算法,还需要进一步对图算法自行学习。
github项目地址–AlgorithmTrainingCamp
如果时间充裕,可以前期进行PC端练习,后期再尝试完全在纸上进行手写练习;如果时间紧张则不建议PC端练习,直接手写。
个人最初是使用的Clion进行coding练习的,所以这些题目是可以成功测试运行的。所涉及的相关结构体及函数定义如下所示:
// SqList.h
// Created by Giperx on 2023/7/24.
//
#ifndef ALGCAMP_SEQLIST_H
#define ALGCAMP_SEQLIST_H
// 顺序表
typedef struct SqList{
int data[100];
int length;
}SqList;
// 初始化顺序表
void initSqList(SqList &list);
// 打印输出顺序表
void printSqList(SqList &list);
#endif //ALGCAMP_SEQLIST_H
//SqList.cpp
// Created by Giperx on 2023/7/27.
//
#include <iostream>
#include "SqList.h"
using namespace std;
void initSqList(SqList &list){
cout << "enter length of SqList:";
cin >> list.length;
cout << "enter values of SqList:";
for(int i = 0; i < list.length; i ++) cin >> list.data[i];
}
void printSqList(SqList &list){
cout << "length: " << list.length << endl;
for(int i = 0; i < list.length; i ++) cout << list.data[i] << ' ';
cout << endl;
}
//LinkList.h
// Created by Giperx on 2023/8/15.
//
#ifndef ALGCAMP_LINKLIST_H
#define ALGCAMP_LINKLIST_H
typedef struct LNode{
int data;
struct LNode *next;
LNode(int val){
data = val;
next = nullptr;
}
}LNode, *LinkList;
// 初始化链表,带头结点
bool initLinkList(LinkList& L);
// 计算链表长度(不包括头结点)
int lengthofLinkList(LinkList& L);
// 输出链表信息
void printLinkList(LinkList& L);
#endif //ALGCAMP_LINKLIST_H
//LinkList.cpp
// Created by Giperx on 2023/8/15.
//
#include "LinkList.h"
#include "malloc.h"
#include "iostream"
using namespace std;
// 初始化链表,带头结点
bool initLinkList(LinkList& L){
L = (LNode*)malloc(sizeof (LNode));
if (!L) return false;
L->next = nullptr;
return true;
}
// 计算链表长度(不包括头结点)
int lengthofLinkList(LinkList& L){
int length = 0;
if (!L){
cout << "nullptr!" << endl;
} else if (!L->next) {
cout << "have not node!" << endl;
} else {
LNode *p = L->next;
while (p){
length++, p = p->next;
}
}
return length;
}
// 输出链表信息
void printLinkList(LinkList& L){
if (!L) cout << "nullptr!" << endl;
else if (!L->next) cout << "have not node!" << endl;
else{
cout << "length of LinkList:" << lengthofLinkList(L) << endl;
LNode *p = L->next;
while (p){
cout << p->data << ' ';
p = p->next;
}
cout << endl;
}
}
//BiTree.h
// Created by Giperx on 2023/8/24.
//
#ifndef ALGCAMP_BITREE_H
#define ALGCAMP_BITREE_H
// 二叉树
typedef struct BiNode{
char data;
struct BiNode* left, *right;
}BiNode, *BiTree;
#endif //ALGCAMP_BITREE_H
//BiTree.cpp
// Created by Giperx on 2023/8/24.
//
#include "BiTree.h"
待完善……