- 博客(33)
- 收藏
- 关注
原创 链式队列和两个栈如何实现一个队列
给头部指针新添加一个指针域指向尾部节点,这样头尾都可以在O(1)时间复杂度里访问。用这样的代码改造单链表的结构体设计 会使得下面都出现一个新添加的指针域 如图所示。(只在头结点出现即可)头文件 链式队列 lqueue.h#pragma once typedef int ELEM_TYPE;typedef struct Node{ ELEM_TYPE data;//数据域 struct Node *next;//指针域}Node, *PNode;//我们对头结点重新设计其结..
2021-08-14 12:21:23
110
原创 基础数据结构 循环队列
想办法让队尾队头的时间复杂度都为O(1)循环队列 头文件 queue.h#pragma oncetypedef int ELEM_TYPE;#define MAXQSIZE 100typedef struct Queue{ ELEM_TYPE *base;//数据域 指向malloc申请来的动态内存 int front;//头指针,当队列不空的时间,保存是队头,指向的第一个元素的下标 int rear;//尾指针,当队列不空的时间,保存的是队尾,指向的下一个元素入队的下标 .
2021-08-12 18:20:41
210
原创 基本数据结构 栈 队列
栈栈:栈是限定仅在 “表尾” 进行插入和删除操作的“线性表"。表尾端被称为栈顶 另一端被称为栈底。没有数据称为空栈因为在线性表的表尾不用挪动数据,时间复杂度低为O(1)。如果是“链表”只能在“表头”,因为链表表头的时间复杂度为O(1)。栈:弹夹;先压入的子弹凡反而最后被击发。先进后出 或 后进先出 的数据结构。队列:队列:"先进先出” 的数据结构,仅在一端进行插入操作 在另一端进行删除操作的线性表(受到限制的线性表)没有数据称为空队列。分别用顺序表和链表实现一下。队列:排队 前面的先被服
2021-07-29 17:06:29
73
原创 基础数据结构 双向循环链表以及单链表习题
双向循环链表.cpp#include <stdio.h>#include <malloc.h>#include <assert.h>#include "dclist.h"/*作业1:补全双向循环链表代码作业2:单链表习题*///循环链表可执行的操作:(增删改查)//初始化void Init_dclist(PDClist pl){ assert(pl != NULL); if(NULL == pl) return; //pl->.
2021-07-27 09:56:23
236
原创 基础数据结构 循环链表
循环链表 clist.cpp#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "clist.h"//作业:补全代码 to do//初始化void Init_clist(PClist pl){ assert(pl != NULL); if(pl == NULL) return; //pl->data; 头结点的数据域不使用 pl->next = pl;
2021-07-24 09:22:02
69
原创 基础数据结构 双向链表
双向链表 .h部分的编写#pragma once//为什么要有双向链表? 因为单链表有自身局限性(只能向后跑,不能向前跑),所以当我们需要向前跑的时候,所以就有了双向链表//双向链表是个啥? 和单链表相比,多了一个直接前驱指针//结构体定义typedef int ELEMTYPE;typedef struct DNode{ int data;//数据域 struct DNode *next;//直接后继指针 struct DNode *prior;//新添加的:直接前驱指针}DNo
2021-07-22 11:15:03
76
原创 C语言基础数据与结构 第二 三节课 不定顺序表 单链表 双链表
不定长顺序表的编写:list.h部分#pragma once typedef int ELEMTYPE;typedef struct Node{ ELEMTYPE data;//数据域 保存其数据本身 struct Node* next;//指针域 指向下一个数据节点的地址}Node, *PNode;//增删改查//初始化void Init_list(Node * plist);//Node * == PNode//头插bool Insert_head(PNode p
2021-07-20 13:57:54
118
原创 C语言文件(File)7月12号课+7月19日课
File(1):文件的定义与类型(2)流的概念和分类(3)二进制文件和文本文件的区别:(4)文件的读写atoi:字符串转整型 ;itoa:整型转换成字符串。
2021-07-19 19:39:21
54
原创 基础数据结构第一节课 定义 基本结构 线性表 时间,空间复杂度 7月15日
基础数据结构和算法的内容(1)数据结构(定义):是相互之间存在一种或者多种特定关系的数据元素的集合。(2)要学习的内容:一定掌握基础数据结构与算法;高级数据结构可以拉开与别人的差距。(3)逻辑结构:指数据对象中数据元素之间的关系。物理结构:指数据的逻辑结构在计算机中的存储形式。(4)线性表: 顺序表 和 链表。举例:编写定长顺序表 并实现下图的功能:首先在.h文件里,放函数的声明以及结构体的定义。.h文件 //放函数的声明以及结构体的定义 .cpp文件来实现函数#pragma
2021-07-16 18:36:12
83
原创 C语言第19次课(动态内存管理的原因 malloc calloc recalloc alloc 堆区栈区的区别 动态申请二维数组)
C语言第19次课
2021-06-03 13:22:19
212
原创 C第十八次课(结构体与数组 结构体的大小 联合体 哑元 机器存放ip 字符串与整型转换)
C语言第十八次课(1)续 结构体与数组编写代码 要求打印学生数据:编写为:用 . 访问时用指向符-> 时:(2)结构体的大小:结构体的对齐方式:听课到 40:46
2021-05-27 13:26:13
157
1
原创 C语言第十七次课 (struct 结构体的定义 分配空间 嵌套 不完整类型 指向 引用 )
C语言第十七次课 (结构体)(1)结构体的定义//注意是设计结构体而不是定义结构体, 因为定义变量要开辟空间, 而设计结构体不会给其开辟空间, 设计结构体时 “ ;” 分号是不可或缺的。//结构体不占用存储空间 但由结构体定义的变量占存储空间。好比 int a=10可以而int=10不行,结构体同理。(2)定义结构体时如何分配空间://对结构体变量的初始化使用花括号[ ],对数组也是[ ],两者的区别是:数组的每一个元素所占字节个数一样,类型也一样; 结构体每一个属性所占的字节个数可
2021-05-20 18:02:17
488
原创 C语言第十六次课(扫雷,结构体)
C语言第十六次课/img-blog.csdnimg.cn/20210515103456354.png#pic_center)
2021-05-19 17:33:16
123
1
原创 C语言第15次课(回顾一维数组 二维数组;分块查询的编写;位运算 与 或等 左移右移 )
C语言第是15次课(1):回顾以一维数组与指针:(2)二维数组由一维数组构成:
2021-05-13 11:58:57
161
原创 C语言第十三次课(递归2;二分查询的循环或递归)
C语言第十三次课(1):Fibonacci数列:从第三项开始,每一项都等于前两项之和。例如:0 1 1 2 3 4 5 8 13…过程图解:时间复杂程度出现了指数型耗损即O(2^n);因为进行了大规模的重复计算。要求从新编写递归部分来降低时间复杂程度;使时间复杂程度变为 O(n);将上面的循环改为递归,利用参数来做文章。执行过程如下:(2)如果数组有序使用 “二分查询”:思考:如果val=45时 程序运行时哪里出了问题?注意:left=right ;并未找到值
2021-05-05 17:57:06
56
原创 C语言第十二次课(进程图解;栈帧作用过程;分治策略;递归图解;递归来倒序,计算最大公约数)
C语言第十二次课(递归)(1):进程图解栈帧作用过程详解:(2)分治策略与递归示例 n的阶乘:编程如下:(3)递归函数的执行:逐层递推和逐层回归。图解递归过程:从栈帧分配角度图解:递归是有限的:把“倒序” 的循环改递归: 先打印 再递归。进行倒序递归的图解:分析 如果先递归再打印时的情况: 两者打印顺序相反递归来计算最大公约数:利用辗转相除法。...
2021-04-29 19:46:29
109
原创 C语言第十一次课(拷贝函数;字符串比较;无类型指针void)
C语言第十一次课(1)拷贝函数(把 源src 的内容考到 目标dest )或者://但红框部分的易读性更好。连续拷贝:(利用返回char类型)过程解析:示例 :依次拷贝 “yhping hello”打印结果为;yhping hello;听课到 1h16min处。...
2021-04-29 12:00:20
52
原创 C语言第十次课(数组左右移动例题;字符串)
C语言第十次课(数组左右移动例题)(1)数组右移(与左移相反)(2)左移k位:原本数组的左移程序:左移K位的主要代码:k可取正取负时的左移代码:交换函数 要上手就能写:“左移右移” 利用反制:利用结构体:...
2021-04-24 14:22:19
102
原创 C语言第九次课(指针练习;冒泡排序;数据左移)
C语言第九次课(1)例题://-1代表没找到 移下一格。直接查表法(部分程序):(2)冒泡排序:首先 “断言” assert(br!=nullptr); 表达式为真继续向下执行,为假则将程序杀死。原定型 #include<assert.h>将其改进为:用bool型来进行标记:数组中数据进行左移:需要编写的部分:...
2021-04-23 17:08:45
89
原创 C语言第八次课(指针;值传递;指针+1;指针对内存的解析;指针与const关键字;数组名;)
C语言第八次课重点(1)回顾指针交换a,b的值#include<stdio.h>void Swap_Int(int a, int b)//形参{ int tmp = a;//自定义函数名tmp a = b; b = tmp;}int main(){ int x = 10; int y = 20; printf("x=%d y=%d /n,x,y"); Swap_Int( x, y); // 实参 printf("x=%d y=%d /n,x,y"); retur
2021-04-22 21:10:58
75
原创 cpu中的寄存器与内部寻址方式
cpu中的寄存器在CPU中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充。数据寄存器数据寄存器(Data Register,DR)又称数据缓冲寄存器,其主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间操作速度上的差异。数据寄存器用来暂时存放由主存储器读出的一条指令或一个数据字;反之,当向主存存入一条指令
2021-04-22 16:50:16
2186
原创 C语言第七次课(形参练习题;switch语句;指针)
C语言第七次课重点(1)回顾练习题:判断是否为闰年:通过设置形参;#include <stdio.h>#include <stdlib.h>bool Is_Leap(int year){ bool leap; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { leap = true; } else { leap = flase;
2021-04-21 19:13:11
288
原创 C语言第六次课(循环,数组,调试,ASCII码值)
C语言第六次课总结(1)死循环举例 三种for( ; ; )//给了空语句{}while(1)//while内不允许有分号出现{}do{}while(1);return 0比较不同循环语句://c语言中的假 :0 ‘\0’ NULL空字符 三个均为flase,其他非0的均为真。for 语句的惯用法:#include <stdio.h>int main(){ int n = 10; int i = 0; for(; ; ) {
2021-04-17 23:24:49
233
原创 C语言第五次课(if语句,函数,形参实参,值传递,逗号表达式)
C语言第五次课(1)双分支改单分支语句;求a b中的最大值:#include <stdio.h>int main(){ int a =0,int b = 0; int max = 0; scanf_s("%d %d",&a,&b); max = a; if(b > max) { max = b } printf("max = %d \n",max); return 0;} //用三目运算
2021-04-15 21:52:19
386
原创 C语言第四次课(结构体,文件,关键字,bool型)
C语言第四次课重点(1):回顾指针大小:指针的大小在x86下只能是4字节即32b,在x64下为8字节即64b。因为指针存放的是首地址。(2)结构体 struct:设计出新的类型,由程序开发者自己设计。struct student{};//需要加分号struct student{ char s_id[10]; char s_name[10]; char s_sex[5]; char s_age; } int main() { int a = 10;
2021-04-15 12:07:21
255
原创 流程控制部分(if语句;条件运算符;switch语句;while语句;for语句)
##流程控制部分(1):if语句示例,计算每个时段的上网费用的程序清单//早上8-12:00为每小时1元,下午为1.5元,晚上为2元。#include<stdio,h>void main(){ int time ;//上网的时间 float rage;//上网的费用 printf("请输入上网的时间\n"); scanf("%d,&time)://输入上网的时间 if (time<12) rage=50*3*1; else
2021-04-11 13:18:52
95
原创 C语言第三次课总结(作用域,生存期,数组,运算符,取模取余,指针)
C语言第三次课总结(1):进程是程序的一次执行#include <stdio.h>void fun(){ int x = 10; int y = 20; printf("%d",x+y); } int main() { int a = 10; fun(); return=0; }//只会给主函数中a分配到栈区,不会给x y ,只有在主函数中调用fun,进入fun后才会给x y分配空间,调用完后x y的空间也就没有了。//
2021-04-10 16:26:36
97
原创 c语言第一次课总结(编译链接过程,二进制计算)
C语言第一次课(3月31日)对c语言来说找工作最重要的是对源代码的剖析及开元框架。``c语言是强调类型的语言(c99标准)即类型不变。不可以将数学和编程混在一起,因为有类型的转换。1.编译链接过程图以及字符类型char;short;int;long int;long long;//整形float;double;long double;//浮点类型void//无类型``2.二进制的计算【200】10=【?】2=【?】16=【?】8解:先列写数字200-128=
2021-04-10 14:16:53
83
原创 c语言第二次课总结(变量,常量,转义字符,可见性,生命期,输入与输出)
c语言第二次课(4月6日)1.变量(可读可写)常量(只可读不可写)定义变量有三种:函数外定义(全局变量)函数内定义(局部变量){}花括号(块变量)//冲突时采用就近原则并向上就近。#include "stdio.h"int g_sum=100;//全局变量int main(){ float ft=12.23//局部变量 inta=10; intg_sum;//局部变量和全局变量同名 a=g_sum//100,0 return=0;
2021-04-09 22:46:15
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人