数据结构与算法
西唐
这个作者很懒,什么都没留下…
展开
-
线性表增删改的基本算法C实现
线性表(linearlist 或sequentlist)是一种最简单且最常用的数据结构,对以后链表、树、图的理解有很大的帮助。下面是实现代码#include"stdio.h"#include"malloc.h"struct SqList{int * listbase;int len; //指定的存储空间int size; //表长度};原创 2015-12-06 00:03:30 · 1239 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度-总结
算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法转载 2016-12-04 18:17:38 · 739 阅读 · 1 评论 -
java--依赖、关联、聚合和组合之间区别的理解
在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。 依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person转载 2016-12-14 22:08:04 · 511 阅读 · 0 评论 -
Java 中Iterator 、Vector、ArrayList、List 使用深入剖析
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。 Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashta转载 2016-06-02 10:48:33 · 958 阅读 · 0 评论 -
数据结构基础之串
串是由零个或多个字符组成的有限序列,可以认为是由字符组成的线性表基本操作如下:#define MaxLen 80typedef struct{//定义串的数据结构 char str[MaxLen]; int length;}SeqString;void StrAssign(SeqString *s,char cstr[]){/原创 2016-02-19 23:25:29 · 487 阅读 · 0 评论 -
数据结构基础之队列
队列是一种先进先出的线性表,只允许在表的一端进行插入,另一端进行删除元素,允许插入的一端称为队头,front,允许删除的一端称为队尾,rear。顺序循环队列的基本运算如下:#define QueueSize 60typedef struct Squeue{//定义顺序循环队列,避免"假溢出" DataType queue[QueueSize]; int front,rear;}Seq原创 2016-02-19 23:20:15 · 590 阅读 · 0 评论 -
数据结构基础之链表
链表的数据机构定义在SeqList.h文件中,代码如下:typedef struct{ DataType list[ListSize]; int length;}SeqList;void InitList(SeqList *L){ //初始化列表 L->length = 0;}int ListEmpty(SeqList L){ if(L.length==0) r原创 2016-02-02 22:10:42 · 498 阅读 · 0 评论 -
数据结构基础之栈
栈:遵行先进后出 对栈的数据结构的定义保存在SeqStack.h中,代码如下:#define StackSize 100typedef struct{//线性 DataType stack[StackSize]; int top;}SeqStack;void InitStack(SeqStack *s){//初始化栈 s->top=0;}int Stack原创 2016-02-06 13:07:17 · 589 阅读 · 0 评论 -
数据结构基础之双向链表(约瑟夫问题)
约瑟夫问题。有n个小朋友,编号分别为1,2....n,按编号围成一个圈,他们按顺时针方向从编号为K的人由1开始报数,报数为m的人出列他的下一个人重新从1开始报数,数到m的人出列,照这样重复下去,直到所有人都出列。编写一个算法,输入n、k和m,按照出列顺序输出编号双向链表:一个节点包含两个指针域,一个前驱结点,一个后继节点分析:1.先建立一个双向链表 2.找到第k个节点原创 2016-02-05 22:41:04 · 985 阅读 · 0 评论 -
基本排序算法(java实现)
基本概念稳定性 内排序和外排序 排序的主要分类选择排序import java.util.Arrays;/** * 选择排序 *1.找到数组中最小的那个元素,将他和数组中第一个元素交换位置; *2.再在剩下的元素中找到最小的元素,将它与第二个元素交换位置 *3.如此往复,直到整个数组排序 *特点: *1.运行时间和输入无关.为了找出最小的元素而扫描一边数组并不能为下一遍扫描提供什么信息原创 2017-01-06 22:17:49 · 515 阅读 · 0 评论