- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 数据结构——使用非递归方法后序遍历二叉树
使用扩展先序遍历二叉树来进行二叉树的创建,使用非递归方法遍历二叉树,并且不同于书上使用的顺序栈,这里采用链栈,与顺序栈的不同是不能将NULL压栈,因此算法较复杂一些,是一次尝试。C语言代码:#include <stdio.h>#include <malloc.h>#include <stdlib.h>//定义二叉树 typedef struct BinaryTree{ char dat
2017-11-03 15:05:09
615
原创 数据结构——循环队列的简单实现
采用顺序存储方式,存储容量要比逻辑上的容量多一个,以此方便判断队空还是队满。采用尾进头出的模式,来达到先进先出的目的。操作简单描述如下:队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度。1.队空条件:rear==front。 2.队满条件:(rear+1) %QueueSIze==front。 3.计算队列长度:(rear-front+QueueSize)%Que
2017-10-13 12:21:17
616
原创 简单算法——使用栈实现括号匹配检验
设计一个算法判定一个算术表达式中的括号是否正确配对(包括三种括号并且需要考虑大中小三种括号的嵌套顺序), 并将对应的程序调试运行通过。 算法思想:暂不考虑数据元素的运算,只考虑括号的配对。则有两个概念:对右括号期待的急迫程度和当前括号的优先级。因此前者的特点符合栈的特点,即后遍历到的括号,急迫程度越强。因此使用一个栈来存储遍历到的括号,遇到左括号则入栈,遇到右括号,如果匹配当前左括号则出栈,如果不匹
2017-10-13 10:20:47
10024
3
原创 数据结构——非循环带头结点单链表的递归方法逆置
与循环单链表相比,非循环带头结点单链表的逆置有一个难以处理的点是头结点的处理。#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int data; Node *next;}Node,*PNode;//节点 typedef struct List{ PNode hea
2017-09-22 15:14:01
1927
原创 数据结构——双循环链表一部分功能的C语言实现
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int data; Node *next; Node *last;}Node,*PNode;//节点 typedef struct List{ PNode head; PNode tail; i
2017-09-22 10:43:20
453
原创 数据结构——单循环链表的逆置
将带头节点的单循环链表逆置方法一:普通循环方法,通俗的讲,只要把每一个结点指向它本来的前一个即可,就像是直接改变了链表概念图中箭头的方向,这一方法就是使用普通的循环打成这个过程。C语言代码实现:void reverseList(PList x){ if(x->head!=x->tail&&x->head->next!=x->tail){ PNode p=x->head;
2017-09-22 10:19:37
4022
原创 数据结构——单循环链表一部分功能的C语言实现
单循环链表主要好处在于方便插入删除结点,适用于动态性比较强的数据结构;缺点是每一个结点只能通过上一个结点来访问,随机访问不方便。//数据结构:单循环链表 #include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int data; Node *next;}Node,*PNode;
2017-09-20 13:36:06
481
原创 数据结构——顺序表的几个重要方法的C语言实现
//数据结构:顺序表 #include <stdio.h>#include <malloc.h>#include <stdlib.h>#define INITSIZE 100#define ADDSIZE 10typedef struct SqList{ int *addr; int length; int size;}SqList;void initList(S
2017-09-18 22:36:04
699
原创 算法——大数加法
将两个无法使用基本数据类型存储的大数进行加法运算。基本思路:使用字符串类型进行输入输出,处理时将其每一位转换成int类型,进行加减和进位。C语言实现:这个是自己编完,根据网上的其他代码进行了一些修改删减得出的代码。个人认为相比网上的一些代码,更具有可读性和实用性,还是比较值得记录的。#include <stdio.h>#include <string.h>#define MAXSIZE 10
2017-09-17 17:46:27
859
原创 算法——快速排序
基本思想:通过一趟快速排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。每一趟排序中,都确定一个基准数,把比它小的都放左边,比它大的放右边,这个过程的算法可以结合其他算法,本文中举出了以下两个例子。快速排序的时间复杂度一般为:O(nlogn),最坏的情况是O(
2017-09-17 11:21:15
314
原创 算法——使用递归解决组合问题
从n个数中取m个数,打印所有可能的结果。思想:把一个大问题分解成很多小问题。先从n个数中取一个,再从取出的这个数序列后面的数中取一个,再从新取出的这个数的序列后面的数中取一个,以此类推,直到只用取一个数,那么只要从剩下的序列中依次取结果就可以了。简单的讲,就是我们高中数学写全组合的次序方法,例如取3个数,就先确定前两个数不变,最后一个依次取序列中的数,取完后再变第2个数,最后都取完后改变第1个数。距
2017-09-16 21:14:12
2118
原创 简单算法——一维数组的循环左移
给定一个有n个元素的数组,使其整体左移m位(m#include <stdio.h>#include <malloc.h>#include <stdlib.h>int main(){ int m=0,n=0,i=0,e=0; printf("请输入序列长度:"); scanf("%d",&n); //定义数组并赋值 int *arr=(int*)malloc
2017-09-16 16:28:08
4447
1
原创 数据结构——时间/空间复杂度
1、算法是指令的有穷序列。5个特征:有穷性,确定性,可行性,输入,输出。4个要求:正确性,可读性,健壮性,效率与低存储量。算法评价:事后统计方法,事前分析估算(时间/空间复杂度)。2、渐进时间复杂度T(n)=O(f(n))渐进时间复杂度衡量的是一个算法基本操作执行次数的数量级,而不是单纯地比较程序运行时间的长短。其真实意义应该是:是如果问题规模(n)趋向于无穷大,比较算法执行时间长短。因此,计
2017-09-16 15:25:34
507
原创 数据结构——基本常识
1、数据结构分为逻辑结构和存储结构。存储结构是逻辑结构的计算机语言表达,而不是指数据元素的存储方式。常见的逻辑结构有:集合,线性,树,图。存储结构有:顺序,链接,索引,散列。数据结构研究的一般为非数值运算:查找,排序,插入,删除,修改和遍历。2、基本术语:数据元素:构成数据结构的基本单位。为一个结点。数据对象:具有相同性质的数据元素的集合。数据项/数据域:构成数据结构的最小单位。数据结构:数据元素及
2017-09-16 14:50:14
419
原创 计算机网络基本常识
1、历史阶段简述1)联机系统阶段(电传打字机),一个计算机处理中心,连接多个终端。2)计算机-计算机网络阶段(ARPANET),多个计算机处理中心,美国分组交换网(APRANET)标志着进入这个时代。3)标准化网络阶段。ISO制订了OSI,包含一系列计算机网络标准。4)网络互联与高速网络阶段。以Internet为核心的高速网络。2、计算机网络协议规定了计算机通信的一系列规则。有语法,语义,同步三个
2017-09-16 13:56:53
766
原创 SQL数据库入门(一)
SQL数据库入门(一)1、数据库的三级模式:从数据库的管理系统角度来看(即DBS内部软件结构),是三级模式结构。模式,即对于DB(数据库)结构极其特征、联系的描述,一般使用DDL语言来进行。模式和模型是不同的,模式是模型的语言描述。三级模式,即使用三种角度来描述一个DB。这种模式保证了一个DB的数据独立性,不仅是在逻辑上的独立性,更是在物理上的独立性。第一级模式为外模式:即描述一个DB的逻辑结
2017-09-16 10:57:46
585
C++ 正则文法定义-正则表达式-NFA-DFA-最小化DFA-字符串匹配DFA
2018-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人