栈和队列
栈(Stack)1.栈也是用来存储逻辑关系为 “一对一” 数据的线性存储结构
2.栈是一种只能从表的一端存取数据且遵循 “先进后出” 原则的线性存储结构。
3.栈的开口端被称为栈顶;相应地,封口端被称为栈底。因此,栈顶元素指的就是距离栈顶最近的元素。**
进栈(Push)和出栈(Pop)1.向栈中添加元素,此过程被称为”进栈”
2.从栈中提取出指定元素,此过程被称为”出栈”
栈的实现顺序栈12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697//使用顺序栈实现二进制转换#include<stdio.h>#include<stdlib.h>#include<conio.h>#define MAXSIZE 100 //根据需要自 ...
顺序表与链表
线性表,顺序表和链表的区别
存储类别
顺序存储结构
单链表
存储分配方式
用一段连续的存储单元依次存储线性表的数据元素
采用链式存储结构,用一组任意的存储单元存放线性表的元素
时间性能
查找O(1)、插入和删除O(n)
查找O(n)、插入和删除O(1)
空间性能
需要预分配存储空间,分大了浪费,小了容易发生上溢
不需要分配存储空间,只要有就可以分配,元素个数不受限制
通过上面的对比,可以得出一些经验性的结论:
若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。若需要频繁插入和删除时,宜采用单链表结构。
当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。而如果事先知道线性表的大致长度,用顺序存储结构效率会高很多。
关系图
基本操作顺序表顺序表元素的插入 将代插入的元素插入到线性表的任意位置,那么只需要找到该位置,将其后的元素依次向后移动最后将该位置腾出(从最后一位元素开始),即可进行填入。
顺序表元素的删除 找到要删除的元素记录下其位置将准备删除的第i个及其后面的元素依次往前移动即可 ...
图书管理系统
前言整个大一下学期,我们竟然真的没有一节专业课!!😰
不过好歹有个实训练练手(●—●)~
实训内容3.图书登记管理程序
问题描述:
请设计一个图书登记管理程序,以方便图书管理员管理图书馆内的图书,该程序应该具有以下功能:
(1)从键盘输入某本图书的信息
(2)给定图书的国际标准书号(ISBN),显示该图书的信息。
(3)给定图书的作者,显示所有该作者所著的图书。
(4)给定国际标准书号(ISBN),修改该图书的信息。
(5)给定国际标准书号(ISBN),删除该图书的信息。
题目要求:
(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。
(2)图书信息应该包含国际标准书号、图书名称、图书出版社、图书作者(假设一个作者)、图书价格、出版时间。
(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
输入要求:
(1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。
(2) ...
快速排序算法
前言关于排序算法,个人已经学习了前三种人称乌龟速三兄弟的算法
冒泡排序
选择排序
插入排序
下面就是快速排序算法啦~
快速排序(quick_sort)从数列中挑出一个元素,称为 “基准”(pivot) 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分(partition)操作。递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
个人基于原理的c语言代码:
12345678910111213141516171819202122232425262728293031#include<stdio.h>void quick_sort(int data[],int left,int right); int get_mid(int data[],int l,int r);int main(){ int i; int data[9]={3,4,1,6,2,8,7,9,5}; quick_sort( ...
基于hexo搭建博客
前言经过了这几天的折腾,作为小白的我,也终于搭好了一个自己的个人博客(基于码云(Gitee)与Hexo的结合)。也无所谓它有没有人看吧……
然后今天想着,趁着把之前的操作,或者纠结了许久的不确定,或者那些踩过的坑等等再整理一下,免得到时候忘了,又得去找教程。
所需的软件和平台各自的官网必须的软件:
node.js
Git 或者 Git镜像站
可根据个人喜好替换的软件:
Visual Studio Code
Typora
以上软件若你下载速度慢,可以在这个文章底部找到我已经下载好的链接,链接里不定期更新以上软件的版本,均为从官网下载下来,不搞什么虚头巴脑的东西。
要用到的框架或平台:
Hexo
码云(Gitee)
安装说明node.js和Typora就不说了,这个灰常简单。
至于Git,它安装的时候选项挺多的,而且还都是洋文,看不懂的话就全部 next 就行了。你要是非得搞明白它每个选项的意思,emmmm你们自己去搜吧,网上有很多。
VsCode安装好之后默认是英文界面,可以在插件市场里搜索chinese,然后安装之后重启软件,就是中文版了。
检验是否成功安装用 Win ...
MarkDown语法学习
MarkDown学习二级标题ctrl+数字
字体ctrl+b 加粗
ctrl+i 斜体
ctrl+u下划线
alt+shift+5 删除线
引用
箭头引用
分割线三个减号
图片ctrl+shift+i;
超链接ctrl+k;
B站
列表有序列表
数字+.+空格
1.2.3.
无序列表
-加空格
- - 表格右键插入
张三
李四
王二
代码三个飘号+语言
12345int main(){ printf("hello world"); return 0;}
12345public class HelloWorld { public static void main(String[] args){ System.out.println("Hello World!"); }}
万事开头难
经过一下午的折腾,博客的框架已经搭建好了,
接下来就是不断的完善啦~
ヾ(◍°∇°◍)ノ゙