自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 C++设计模式(观察者模式和工厂模式)

N

2022-08-03 15:25:56 562 1

原创 shared_ptr智能指针的使用

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode *p,*q; //p指向头结点的下一个结点 p=pHead->next; .

2022-07-31 16:33:33 425

原创 锁---面试重点

1.互斥锁:互斥锁是一种「独占锁」,比如当线程 A 加锁成功后,此时互斥锁已经被线程 A 独占了,A可以共享系统资源。只要线程 A 没有释放手中的锁,线程 B 加锁就会失败,加锁失败后,内核会将线程置位睡眠状态,等到A线程释放,内核会在合适的时机唤醒线程。B线程就拿到锁可以访问系统资源。2.自旋锁:自旋锁在【用户态】完成加速和解锁操作,所以相比互斥锁来说,开销小,速度快。自旋锁会查看锁的状态,如果锁是空闲的。将锁设置为前进程持有。如果锁住的代码执行时...

2022-03-25 17:08:44 195

原创 1.二分查找

#include <stdio.h>#include <string.h>#define SIZE 7void binary_search(int key, int a[]){ int low, high, mid, count = 0; low = 0; //低位为0 int len = sizeof(a) / sizeof(a[0]); high = SIZE-1; //高位为SIZE-1 while (low <= high) .

2021-10-17 16:32:38 148

原创 求1+1/2-1/3+1/4+1/u求u的值

#include <iostream>using namespace std;double fun(int u){ double sum = 1; for (int i = 2; i < u +1; i++) { if (i % 2 == 0) { sum += 1.0/i; } else { sum -= 1.0/i; } } return sum;}int main(){ double b = fun(2); cou.

2021-09-28 17:56:46 138

原创 1.求a和b中的大者 2.给链表插入一个新节点

#include<iostream> using namespace std; int main(){ int max(int a,int b); //函数声明 int (*p)(int a,int b); //定义指向函数的指针变量p int a,b,m; cout<<"请输入两个整数:"<<endl; p=max; //使p指向指针变量p cin>>a>>b; m=p.

2021-09-27 18:32:26 113

原创 1.单例模式 2.猜数游戏 3.递归输出字符串

单例模式:一个类只能被一个对象被创建,如果有多个对象的话,可能会导致状态的混乱和不一致。通过单例模式,可以做到:1. 确保一个类只有一个实例被建立2. 提供了一个对对象的全局访问指针3. 在不影响单例类的客户端的情况下允许将来有多个实例将构造函数包起来,提供一个对对象的全局访问指针class stu{public: static stu *getstudent() { if (student == NULL) { student = new stu();...

2021-09-27 14:11:23 128

原创 判断自己的机器是大端序存储还是小端序存储

#include <stdio.h> int main(){ int n = 1; printf("n的地址:%p \n",&n); char ch = (char)n; if(ch) { printf("ch=%d 是小端序\n",ch); //注意我们打印的是ch的ASCII码值 } else { printf("ch=%d 是大端序\n",ch); } return 0;}...

2021-09-24 00:54:36 124

原创 1.合并两个已知尾结点的单向循环链表 2.合并两个有序的链表,使它成为一个有序链表 3.链表的排序 4.链表的删除

1.合并两个已知尾结点的单向循环链表#include <stdio.h>LIST *merge(LIST *LA,LIST *LB){ //合并两个已知尾结点的链表 LIST *pa = LA; LIST *pb = LB; LIST *LC = LA; //LC尾新链表 //找到LA的尾结点 while(NULL != pa) { pa = pa->next; } //找到LB的尾结点 while(NULL != pb) { pb =

2021-09-20 18:45:00 158

原创 写一个程序用链表实现,用来存储学生的学号和成绩,并按分数从低到高排序

输出结果:MakefileCC:=gccOBJS:=student.o main.oCFLAGS:=-c -gRM:= rm -rftest:$(OBJS) $(CC) $^ -o $@student.o:student.c student.h $(CC) $(CFLAGS) $< -o $@main.o:main.c $(CC) $(CFLAGS) $< -o $@.PHONY:cleanclean: $(RM) *.o student.h.

2021-09-17 21:31:41 3497 2

原创 约瑟夫问题 C++

#include <iostream>using namespace std;int main(){ int a[11] = {0}; //0表示在圈内 int n,m; cout << "请输入人数,出圈数字 " << endl; cin >> n >> m; //n个人玩游戏,玩到m时出圈 int pop=0,c=0,k=0; //pop出圈 while(pop != n) //当还有.

2021-09-15 17:15:37 183

原创 计算字符串中字串出现的次数,求次大值(详解)

1.int Search(char *str,char *substr){ //请实现}#include <stdio.h>#include <string.h>int main(){ char * str = "niaiwowoainitianmimi"; char * substr = "ai"; int n; int count = 0; n = strlen(substr); while(...

2021-09-11 22:26:36 173

原创 单向链表反向(头结点没有值)

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode *p,*q; //p指向头结点的下一个结点 p=pHead->next; .

2021-09-11 21:00:11 220

原创 牛客笔试题,用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。

class Solution{public: void push(int node) { //将数据node入栈到stack1 stack1.push(node); } int pop() { if(stack2.empty()) { //将stack1的数据入栈到stack2再出栈 while(!stack1.empty()) { .

2021-09-11 15:00:35 456

原创 1.斐文那契数列-兔生兔问题 2.分数递归 3.递归求和4.递归排序

1.斐文数列#include <stdio.h>int fib(int n){ if(n==1 || n==2) { return 1; } else { return (fib(n-1) + fib(n-2)); }}int main(){ int num = fib(10); printf("num = %d\n",num); return 0;}2.分数递归#include <stdio.h>double fun(int

2021-09-11 15:00:05 247

原创 插入排序-(一目了然)

#include <stdio.h>void Insort(int *a,int len){ int i,j,temp; for(i=1;i<len;i++) { //将被插入的数据保存下来 temp = a[i]; for(j=i-1;j>=0;j--) { //如果要插入的数比他前面的数小,整体向后挪动一位 if(temp < a[j]) { a[j+1] = a[j]; } .

2021-09-10 21:01:18 114

原创 用栈实现括号的匹配问题--C/C++

1.要求写出算法,用来判断一个表达式中各种括号(大括号,小括号)是否配对(左右对称)出现?#include <iostream>#include <stack>#include <string>using namespace std;int main(){ //用栈实现左右括号匹配问题 string str1 = "((([[]]))[)"; stack<char> s; for (int i = 0; i < str1.size

2021-09-10 17:39:53 1083

原创 将小写字符串转换为大写字符串-》用C实现(简洁明了)

#include <stdio.h>int main(){ char str[5] = {"HEllo"}; char *p = str; while(*p != '\0') { if(*p >= 'a' && *p <= 'z') { *p = *p - 32; p++; } //如果p指向的字符不是小写字母则继续向后遍历 else { p++; } } //打印 printf(".

2021-09-09 22:02:40 211

原创 剑指offer--》C语言进阶面试重点

1.判断下列程序输出什么?int main(){ char arr1[] = "abcdef"; char arr2[] = "abcdef"; char *p1 = "abcdef"; char *p2 = "abcdef"; //判断输出结果 arr1和arr2保存的是字符串的首元素地址,两块独立的内存空间 if(arr1 == arr2) { printf("hehe\n"); } el

2021-09-06 14:23:01 343 2

原创 字符串倒置(指针系列)

#include <stdio.h>#include <string.h>#define M 20int main(){ char str[M] = {'\0'}; //p指针指向字符串首位 char *p = str; char *q = p; printf("请输入字符串\n"); gets(str); //q指针指向字符串最后一位 q = q + strlen(q) - 1; //将q指向的字符串和p指向的字符串交换 while( p &l.

2021-09-03 20:24:11 1012

原创 十大排序-快速排序(一目了然)

#include <stdio.h>void Quicksort(int a[],int left,int right){ if(left > right) { return ; } int l = left; int r = right; //确定键值,用于比较 int point = a[right]; //(确认键值右边数为键值先从左遍历,相反先从右遍历) while(l < r) { //左向右遍历找到比point大的数 while(l.

2021-09-03 10:51:34 117

原创 十大排序-快速排序算法

#include <stdio.h>void Quicksort(int a[],int left,int right){ if(left > right) { return ; } int mid = (left + right) / 2; int l = left; int r = right; int temp = a[right]; a[right] = a[mid]; a[mid] = temp; //键值 int point = a[righ.

2021-09-02 20:28:34 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除