- 博客(139)
- 资源 (2)
- 收藏
- 关注
原创 Linux系统添加硬件设备流程
(此方法重启后失效,每次需手动挂载,开机自启挂载方法见《Linux这么学》P188)三、通过检查系统的挂载状态并真实地使用硬盘来验证硬盘设备是否成功添加。(回车后会让输入对应参数,具体见《Linux这么学》P195)(2)手动将分区信息同步到内核(连续执行两次效果更好)(步骤见《Linux这么学》P191)(1)新建、修改及删除磁盘的分区表信息。(1)创建一个用于挂载设备的挂载点目录。二、依次进行分区、格式化、挂载操作。(2)将想要格式化的文件系统格式化。(2)将存储设备与挂载点进行关联。
2023-10-18 10:33:12 201
原创 Linux用户权限 rwx
文件类型:普通文件(-) 目录文件(d) 链接文件(l) 管道文件(p)块设备文件(b) 字符设备文件(c)SBIT-用户只能删除自己文件,不能删除其他用户文件-t(原本有可执行权限)-T(原本无可执行权限)-1。SUID-文件所有者临时权限-s(原本有可执行权限)-S(原本无可执行权限)-4。SGID-文件所属组权限-s(原本有可执行权限)-S(原本无可执行权限)-2。SGID 增加 g+s 取消 g-s。x-execute-可执行-1。w-write-可写-2。r-read-可读-4。
2023-10-17 10:16:10 202
原创 链表反转笔记
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { //定义一个指针作为当前结点,刚开始要指向头节点 ListNode *cur = pHead; //链表反
2021-11-20 17:40:30 529
原创 静态成员与静态成员函数(谭浩强)
一、类中的 数据成员 和 成员函数 的存储方式用类去定义对象时,系统会为每一个对象分配存储空间。同个类的不同对象中的数据成员的值一般不同,但不同对象的函数的代码是相同的,不论调用哪一个对象的函数的代码,其实调用的都是同样了内容的代码。即每个对象所占用的空间只是该对象的 数据成员 所占用的存储空间,而不包含代码所占用的存储空间。函数的目标代码是存储在对象空间之外的。不论成员函数在类内定义还是类外定义,也不论成员函数是否用inline声明(内联函数),成员函数的代码段都不占用对象的存储空间。如果只
2021-11-09 17:28:58 434
原创 sizeof和strlen
int main(){ char a[] = "hello"; cout << strlen(a) << endl;//5 字符长度5(这里不包括结束标志) cout << sizeof(a) << endl;//6 但数组大小为6,因为结束标志\0也占一个 char b[100];//给字符数组b分配大小为100的空间 strcpy_s(b, a);//把a拷贝进b里 cout <<
2021-11-08 14:47:36 97
原创 C++线程运行的开始和结束(代码演示)
一 主线程:int main(){ //程序运行起来,生成一个进程,该进程所属的主线程开始自动运行 cout << " I love China" << endl;//实际上这是主线程在执行,主线程从main()函数返回,则整个进程执行完毕。 return 0;}主线程从main()函数开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数)一旦这个函数运行完毕,就代表我们这个线程运行结束。整个进程是否执行完毕的标志是:主线程是否执行完,如果主线
2021-10-13 15:05:13 4371 1
转载 main(int argc,char *argv[])
一般的main函数都是不带参数的,因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头可以写为:main (int argc,char *argv[])由于ma
2021-07-20 10:53:53 163
原创 数据结构:归并排序
ElemType* B = new ElemType[];void Merge(ElemType A[], int low, int mid, int high){ //表A的两段A[low...mid]和A[mid+1...high]各自有序,将它们合并成一个有序表 int i, j,k; for (int k = low; k <= high; k++) B[k] = A[k];//将A中所有元素复制到B中 for (i = low, j = mid + 1, k = i; ...
2021-07-17 17:53:05 63
原创 数据结构:堆排序
void AdjustDowm(ElemType A[], int k,int len){ //向下调整堆 //将位置k的元素向下进行调整 A[0] = A[k];//A[0]暂存 for (int i = 2*k;i <= len;i *= 2)//沿key较大的子节点向下筛选 { if (i < len && A[i] < A[i + 1]) i++;//取key较大的子节点的下标 if (A[0] > A[i])//筛选结...
2021-07-17 16:24:01 69
原创 简单选择排序
** 简单选择排序**void SelectSort(ElemTpye A[],int n){ //对表A进行简单选择排序,A[]从0开始存放元素 for (int i = 0; i < n - 1; i++)//一共进行n-1趟 { int min = i;//记录最小元素位置 for (int j = i + 1; j < n; j++)//在A[i...n-1]中选择最小的元素 { if (A[j] < A[min])//更新最小元素位置 m
2021-07-17 15:22:54 65
原创 数据结构:冒泡排序
void BubbleSort(ElemType A[],int n){ //用冒泡排序法将序列A中的元素按照从小到大排列 //注意此代码是从第一趟开始计数,而不是用第0趟 //表长为n,共需要n-1趟排序(外层循环) //每m趟排序需要比较n-m次(内层循环) RedType temp; int m,j; for (m = 1; m <= n - 1; m++)//外层循环,n个记录总共需要 n-1 趟排序 { flag = false;//表示本趟冒泡是否发生...
2021-06-27 19:05:02 185 1
原创 数据结构:希尔排序
void ShellSort(ElemType A[],int n){ //1.前后记录位置的增量是dk,不是1 //2.A[0]只是暂存单元,不是哨兵,当j<1时,插入位置已找到 for (dk = n / 2; dk >= 1; de = dk / 2)//步长变化 { for (i = dk + 1; i < n; ++i) { if (A[i].key < A[i - dk].key) A[0] = A[i]; //A[0]只是暂存单...
2021-06-27 17:07:19 76
原创 折半插入排序
void InsertSort(ElemType A[],int n){ int i, j, low, high, mid; for (i = 2; i <= n; i++) { A[0] = A[i]; low = 1; high = i - 1; while (low <= high) { mid = (low + high) / 2; if (A[0].key < A[mid].key) { high = mid - 1;//查.
2021-06-27 14:14:01 81
原创 直接插入排序
一 直接插入排序此方法需要判断是否越界和比较元素大小,即for循环中需要做两次判断操作,比较费时,对此,我们引入“哨兵”:void InsertSort(SqList &L){ int i, j; for (i = 2; i <= L.length; i++)//依次将L[2]到L[n]插入到前面已排序序列 { if (L.r[i].key < L.r[i - 1].key)//若L[i]的关键字小于前驱,需将L[i]插入到有序表 { L.r[0...
2021-06-27 13:05:30 155
原创 数据结构:排序概述
#define MAXSIZE 20//设记录不超过20个typedef int KeyType;//设关键字为整型量typedef struct//定义每个记录(数据元素)的结构{ KeyType key;//关键字 InfoType otherinfo;//其他数据项}RedType;//Record Typetypedef struct//定义顺序表结构{ RedType r[MAXSIZE + 1];//存储顺序表的向量 r[0]一般做哨兵或缓冲区 int...
2021-06-27 11:30:27 470 1
原创 二叉排序树
递归方法://二叉排序树的查找//递归BSTree SearchBST(BSTree T, KeyType key){ if ((!T) || key == T->data.key)//判断是否等于根节点 return T; else if (key < T->data.key) return SearchBST(T->lchild, key);//在左子树继续查找 else return SearchBST(T->rchild, key)...
2021-06-26 13:32:52 176
原创 数据结构:折半查找
int Binary_Search(SeqList L,ElemType key){ int low = 0, high = L.length - 1, mid; while (low <= high) { mid = (low + high) / 2; if (key == L.elem[mid]) return mid; else if (key < L.elem[mid]) high = mid - 1; else low = mid + 1;
2021-06-25 15:04:22 92
原创 数据结构:顺序查找
顺序表定义:typedef struct{}ElemType;typedef struct//顺序表结构类型定义{ ElemType* R;//表基址 int length;//表长}SSTable;//Sequential Search TableSSTable ST;//定义顺序表ST在顺序表ST中查找值为key的数据元素int Search_Seq(SSTable ST, ElemType key){ ST.R[0] = key; for (int i = ST.
2021-06-25 14:11:56 215
原创 二叉树的遍历
typedef struct BiNode{ ElemType data; struct BiNode* lchild, * rchlid;//左右孩子指针}BiNode,*BiTree;三种遍历方法(递归)://先序遍历void PreOrder(BiTree T){ if (T != NULL) { visit(T);//访问根节点,具体访问操作视情况而定,比如cout<<T->data<<endl; PreOrder(T->l.
2021-06-24 20:10:45 97 1
原创 串的模式匹配——BF算法
从头开始查找:int Index_BF(SString S, SString T)//主串S,子串T{ int i = 1, j = 1; while (i <= S.length && j <= T.length) { if (S[i] == T[i]) { ++i; ++j; } else { i = i - j + 2;//指针后退重新匹配 j = 1; } if (j > T.length) re.
2021-06-22 15:55:47 249
原创 线性表的合并
总体实现(没有说是顺序表还是链表):void union(List& La, List& Lb){ La_len = ListLength(La); Lb_len = ListLength(Lb); for (i = 1; i < Lb_len; i++) { GetElem(Lb, i); if(!Locate(La,e)) Insert(La, ++La_len, e) }}有序表的合并:顺序表实现:(王道习题答案)bool Merg..
2021-06-19 20:02:52 458
原创 数据结构:双向链表
定义:typedef struct LNode//声明结点类型 和 指向结点的指针类型{ ElemType data;//结点的数据域 struct LNode *prior,* next;//结点的指针域}DuLnode, * DuLinkList;双向链表的插入:void Insert(DuLinkList& L, int i, ElemType e){ DuLnode* s; DuLnode* p; p = GetElem(L, i); if (!p) .
2021-06-19 16:17:47 80
原创 带尾指针的循环链表的合并
步骤:p保存Ta表头结点防止丢失Tb表头接到Ta表尾释放Tb表头结点修改指针LinkList Connect(LinkList Ta, LinkList Tb){ LNode* p; p = Ta->next; Ta->next = Tb->next->next; delete Tb->next; return Tb;}
2021-06-19 15:08:05 676
原创 数据结构:单链表
单链表:由头指针唯一确定,因此单链表可以用头指针的名字来命名。如何表示空表?无头节点时,头指针为空时表示空表有头节点时,当头结点的指针域为空时为空表typedef struct LNode//声明结点类型 和 指向结点的指针类型{ ElemType data;//结点的数据域 struct LNode* next;//结点的指针域}LNode,*LinkList;//LinkList为指向结构体LNode的指针类型存储学生学号、姓名、成绩的单链表结点类型定义如下:typ
2021-06-19 11:40:31 1086
原创 数据结构:顺序表
1 顺序表的定义静态分配:#define MaxSize 100////线性表最大长度//数组静态分配typedef struct{ ElemType data[MaxSize];//ElemType为数量类型,可根据实际替换成想要的数据类型,如int int length;//当前长度}SqList;动态分配://数组动态分配#define MaxSize 100////线性表最大长度#define InitSize 100//线性表初始分配量typedef struct{
2021-06-15 17:04:59 511
原创 C++:机房预约系统(五)——教师模块
//有参构造Teacher::Teacher(int empId, string name, string pwd){ this->m_EmpId = empId; this->m_Name = name; this->m_Pwd = pwd;}//菜单界面void Teacher::operMenu(){ cout << "欢迎老师" << this->m_Name << "登录" << endl; co.
2021-05-13 18:34:46 158 2
原创 C++:机房预约系统(四)——学生模块
//菜单界面void Student::operMenu(){ cout << "欢迎同学" << this->m_Name << "登录" << endl; cout << "\t\t -----------------------------------\n"; cout << "\t\t | |\n"; cout << "\t\t ..
2021-05-13 12:45:05 191 2
原创 C++:机房预约系统(三)——管理员模块
//有参构造Manager::Manager(string name, string pwd){ //初始化管理员信息 this->m_Name = name; this->m_Pwd = pwd;}/进入管理员子菜单void managerMenu(Identity*& manager)//父类指针,这里的&是按引用传递,这里是指针的别名{ while (true) { //调用管理员子菜单 manager->operMenu();.
2021-05-04 22:27:28 384 1
原创 C++:机房预约系统(二)——登录模块
#pragma once//管理员文件#define ADMIN_FILE "admin.txt"//学生文件#define STUDENT_FILE "student.txt"//教师文件#define TEACHER_FILE "teacher.txt"//机房信息文件#define COMPUTER_FILE "computer.txt"//订单文件#define ORDER_FILE "order.txt"//登录功能 参数1 操作文件名 参数2 操作身份.
2021-05-04 11:33:24 323
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人