数据结构
文章平均质量分 50
Heavy sea
这个作者很懒,什么都没留下…
展开
-
串的存储和基本操作
一、 串的定义串,即字符串是由零个或多个字符组成的有限序列,串中字符的个数称为串的长度子串:串中任意个连续的字符组成的子序列主串:包含子串的串字符在主串中的位置:字符在串中的序号子串在主串的位置:子串的第一个字符在主串中的位置串是一种特殊的线性表,数据元素之间呈线性关系串的数据对象限定为字符集(如中文字符、英文字符、数字字符、标点字符等)...原创 2021-02-10 12:02:43 · 595 阅读 · 0 评论 -
队列的链式存储
一、用链式存储实现队列// 链式队列结点typedef struct LinkNode{ int data; struct linkNode *next;}LinkNode; // 链式队列 typedef struct { //队列的队头和队尾指针 LinkNode *front,*rear;}LinkQueue;二、初始化队列//初始化队列(带头结点)void InitQueue(LinkQueue &Q){ Q.front=Q.rear=(Li原创 2021-02-05 16:40:52 · 1019 阅读 · 0 评论 -
队列的顺序存储
一、队列的定义:队列是只允许在一端进行插入,另一端进行删除的线性表特点:先入队的元素先出队,先进先出队尾:允许插入的一端队头:允许删除的一端front 指向队头元素rear 指向队尾元素的后一个元素(下一个应该插入的位置)循环队列:将存储空间在逻辑上变成“环状”判断队满和队空此时队满的情况下,会浪费一个存储空间,因为若继续存储,会使rear指向d,即rear == front,而这是判断队空的情况队列已满的条件:队尾指针的再下一个位置是队头(Q.rear+1)%MaxSize =原创 2021-01-29 12:36:46 · 635 阅读 · 0 评论 -
顺序栈的实现(栈的顺序存储)
一、栈的基本概念栈是只允许在一端进行插入或删除操作的线性表逻辑结构:与线性表相同数据的运算:插入、删除操作有所区别特点:后进先出二、栈的顺序存储的实现1.栈的定义和初始化注意:在内存中还要申请top栈顶指针空间,top记录的是数组的下标栈顶指针记录的是数组的下标#define MaxSize 10 //定义栈中元素的最大个数typedef struct { int data[MaxSize]; //静态数组存放栈中元素 int top; //原创 2021-01-28 23:26:05 · 1641 阅读 · 0 评论 -
C语言 简单选择排序法
简单选择排序是指一种排序算法,在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。一、基本思想在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。二、排序步骤:以从小到大进行排序为例:数组里面有4个元素: len = 4a[0] = 10a[1] = 1a[2] = 20a[3] = 51.第0轮选择最小数放到a[0]:原创 2021-01-27 11:40:08 · 4500 阅读 · 0 评论 -
c语言 冒泡排序法
一、什么是冒泡法冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完成了排序。二、举例实现 (从小到大)以冒泡法(从小到大)为例原理:比较相邻的元素,将值大的元素交换到右边原始数组数据:8 4 20 5 总共4个数 len = 41.冒泡法过程列出:相邻两个数比较,大的数交换到右边第0轮4 8 20 5 、4 8原创 2021-01-26 00:03:03 · 2878 阅读 · 0 评论 -
顺序表和链表的比较
一、逻辑结构都是线性表,都是线性结构二、存储结构1.顺序表:顺序存储优点:支持随机存取、存储密度高缺点:大片连续空间分配不方便,改变容量不容易2.链表:链式存储优点:离散的小空间分配方便,改变容量方便缺点:不可随机存取,存储密度低三、基本操作1.创建2.销毁:顺序表:若是静态分配创建静态数组,系统会自动回收空间若是动态分配,则要手动free链表:依次删除各个结点3.增删:4.查找四、顺序表和链表的选择选择顺序表 表长可预估 查询(搜索)操作比较多选择链表原创 2021-01-23 23:57:04 · 242 阅读 · 0 评论 -
双链表 循环链表及静态链表
一、什么是双链表双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。二、双链表的创建和初始化typedef struct DNode{ int data; struct DNode *prior,*next; }DNode,*DLinklist;bool InitDLinkList(DLinklist &L){ L原创 2021-01-23 21:41:41 · 255 阅读 · 0 评论 -
线性表------顺序表的定义和操作
线性表定义线性表是具有相同数据类型的n个数据元素的有限序列,其中n为表长一、顺序表的定义定义:用顺序存储的方式实现线性表顺序存储,把逻辑上的相邻的元素存储在物理位置上也相邻的存储单元中。二、顺序表的实现–静态分配#define MaxSize 10 typedef struct{ int data[MaxSize]; //用静态的数组存放数据元素 int length ;}Sqlist原创 2021-01-21 11:52:44 · 810 阅读 · 0 评论 -
线性表----访问链表中的数据及查询链表
#include <stdio.h>#include <stdlib.h>struct Test{ int data; struct Test *next;};void printLink(struct Test *head){ struct Test *p; p = head; while(p != NULL){ printf("data = %d\原创 2020-10-12 21:13:11 · 345 阅读 · 0 评论 -
线性表----单链表删除指定节点
#include <stdio.h>struct Test{ int data; struct Test *next;};void printLink(struct Test *head){ struct Test *p; p = head; while(p != NULL){ printf("data = %d\n",p->data);原创 2020-10-22 16:45:37 · 217 阅读 · 0 评论 -
线性表----尾插法创建链表
#include <stdio.h>#include <stdlib.h>struct Test{ int data; struct Test *next;};struct Test *insertBehind(struct Test *head,struct Test *new){ struct Test *p = head;//注意防止指针头发生变化 if(p == NULL){原创 2020-10-22 16:44:40 · 119 阅读 · 0 评论 -
线性表----头插法创建链表
通过while 调用创建#include <stdio.h>#include <stdlib.h>struct Test{ int data; struct Test *next;};struct Test *createLinks(struct Test *head){ struct Test *new; new = (struct Test*)malloc( sizeof(struct Test)原创 2020-10-22 16:45:14 · 257 阅读 · 0 评论 -
线性表----单链表从指定节点前方插入新节点
#include <stdio.h>struct Test{ int data; struct Test *next;};void printLink(struct Test *head){ struct Test *p; p = head; while(p != NULL){ printf("data = %d\n",p->data);原创 2020-10-22 16:46:01 · 1057 阅读 · 0 评论 -
线性表----单链表从指定节点后方插入新节点
#include <stdio.h>struct Test{ int data; struct Test *next;};void printLink(struct Test *head){ struct Test *p; p = head; while(p != NULL){ printf("data = %d\n",p->data);原创 2020-10-22 16:46:25 · 710 阅读 · 0 评论