2024年常用代码记录,2024年最新深入理解C C++的核心知识点

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

{
if( 0 == hashTable[(int)*p] )
{
src[index++] = *p;
}
p++;
}
src[index] = ‘\0’;
return src;
}

int main()
{
char src[1024];
char dest[1024];
scanf(“%s”,src);
scanf(“%s”,dest);
char * pResult = string_del_characters( src, dest );
std::cout << pResult << std::endl;
}


##### 三、根据中心坐标找最近距离



#include
#include
#include
#include
#include
using namespace std;

int main() {
vector sets;
string s;
getline(cin, s);
stringstream sstr(s);
string token;
//输入字符串,根据,号分割
while (getline(sstr, token, ‘,’)) {
sets.push_back(atoi(token.c_str()));
}
int src_x = sets[0];
int src_y = sets[1];
int n = sets[2];
if (n == 0) {
cout << “(” << src_x << “,” << src_y << “)” << endl;
return 0;
}
float minDistance = 128 * 2;
vector npc(2 * n, 0);
for (int i = 0; i < 2 * n; ++i) {
npc[i] = sets[i + 3];
}
int index;
//求坐标距离
for (int i = 0; i < 2 * n; i += 2) {
float distance = sqrtf(pow(npc[i] - src_x, 2) + pow(npc[i + 1] - src_y, 2));
if (distance < minDistance) {
minDistance = distance;
index = i;
}
}
cout << “(” << npc[index] << “,” << npc[index + 1] << “)” << endl;
return 0;
}


##### 四、根据前序遍历和中序遍历求后序



/*************************************************************************mZ

Author: FengXin
Mail: fengxinlinux@gmail.com
Created Time: 2016年10月27日 星期四 20时01分43秒
************************************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<sys/signal.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<sys/stat.h>
#include<fcntl.h>

typedef struct node
{
char data; //结点数据
struct node *Lchild; //左孩子
struct node *Rchild; //右孩子
}tree; //树的结点

int Lchild_len(char insequence[20],char root_data) //得到左孩子的长度
{
int len=strlen(insequence);
int i=0;
int sum=0; //记录左孩子长度
while(insequence[i]!=root_data)
{
i++;
sum++;
}
return sum;
}

int Rchild_len(char insequence[20],char root_data) //得到右孩子的长度
{
int i=0;
int sum=0; //记录右孩子长度
while(insequence[i]!=‘\0’&&insequence[i++]!=root_data);
while(insequence[i]!=‘\0’)
{
sum++;
i++;
}
return sum;
}

tree* create_tree(char presequence[20],char insequence[20]) //创建二叉树
{
tree* temp=(tree*)malloc(sizeof(tree)); //创建结点
int L_len,R_len; //储存左右孩子长度
char L_presequence[20],L_insequece[20]; //创建左孩子时传入的左孩子的前序串和中序串
char R_presequence[20],R_insequece[20]; //创建右孩子时传入的右孩子的前序串和中序串
L_presequence[0]=L_insequece[0]=R_presequence[0]=R_insequece[0]=‘\0’;
if(strlen(presequence)!=0&&strlen(insequence)!=0) //传入的序列串非空
{
temp->data=presequence[0]; //根结点数据赋值
L_len=Lchild_len(insequence,presequence[0]); //获得孩子的长度
R_len=Rchild_len(insequence,presequence[0]);
strncpy(L_presequence,presequence+1,L_len); //得到要递归创建孩子时要传入的前序遍历串和中序遍历串
*(L_presequence+L_len)=‘\0’; //字符串末尾加上’\0’
strncpy(R_presequence,presequence+L_len+1,R_len);
*(R_presequence+R_len)=‘\0’;
strncpy(L_insequece,insequence,L_len);
*(L_insequece+L_len)=‘\0’;
strncpy(R_insequece,insequence+L_len+1,R_len);
*(R_insequece+R_len)=‘\0’;
temp->Lchild=create_tree(L_presequence,L_insequece); //递归创建左子树
temp->Rchild=create_tree(R_presequence,R_insequece); //递归创建右子树
return temp; //返回结点地址
}
else //若根结点无孩子,则返回空指针
{
return NULL;
}

}

void postorder(tree *root) //后序遍历树输出
{
if(root!=NULL)
{
postorder(root->Lchild);
postorder(root->Rchild);
printf(“%3c”,root->data);
}
else
return;

}

int main()
{
char presequence[20]; //存先序序列
char insequence[20]; //存中序序列
tree *root;

printf("请输入先序序列\n");
scanf("%s",presequence);
printf("请输入中序序列\n");
scanf("%s",insequence);
root=create_tree(presequence,insequence);
printf("创建二叉树成功\n");
printf("后序遍历输出为:\n");
postorder(root);
printf("\n");

}


##### 五、实现memcpy函数



#include
#include
#include
#include
#include <stdio.h>
#include <string.h>
#include
using namespace std;

char *my_memcpy(char dst, const char src, int cnt)
{
if(dst == NULL || src == NULL) return NULL;
char *ret = dst;
if (dst >= src && dst <= src+cnt-1) //内存重叠,从高地址开始复制
{
dst = dst+cnt-1;
src = src+cnt-1;
while (cnt–)
*dst-- = *src–;
}
else //正常情况,从低地址开始复制
{
while (cnt–)
*dst++ = *src++;
}
return ret;
}

char * str_copy(char *dst,const char *src)
{
if(dst == NULL || src == NULL) return NULL;
char *ret = dst;
my_memcpy(dst, src, strlen(src)+1);
return ret;
}

int main()
{
char src[1024];
char dest[1024];
scanf(“%s”,src);
// scanf(“%s”,dest);
char * pResult = str_copy(dest, src );
std::cout << pResult << std::endl;
}


##### 六、对学生的若干科成绩进行排序


Alay 80 90   
 Bob 95 99 88   
 Cally 88 90



#include
#include
#include
#include
#include
using namespace std;

//对学生的若干科成绩进行排序
struct students{
string name;

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

.(img-IVMokhIX-1715595383799)]
[外链图片转存中…(img-5H2NXDQ5-1715595383799)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值