数据结构
zgege
借事修人
展开
-
顺序表的增删查操作
本文目标:实现基于静态数组的顺序表的以下基本操作: 初始化 尾插 尾删 头插 头删 读任意位置元素 修改任意位置元素 查找指定元素值的下标 在任意位置插入元素—————————————————————————————— seqlist.h#pragma once //防止头文件重复包含#include <stdlib.h> #define SeqListMaxNum 1原创 2018-03-11 23:05:17 · 357 阅读 · 0 评论 -
数据结构-回溯法求解简单迷宫
回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”在生活中,也会出现回溯方法的运用,比如我们有些没有反向感的朋友们,去西安玩耍,走到钟楼底下环形通道迷路了,想要找到7出口,又不知道其他路径可行的情况下,就会原路...原创 2018-05-04 11:17:54 · 473 阅读 · 0 评论 -
数据结构-堆的基本操作
堆(heap)也被称为优先队列(priority queue)。队列中允许的操作是先进先出(FIFO),在队尾插入元素,在队头取出元素。而堆也是一样,在堆底插入元素,在堆顶取出元素,但是堆中元素的排列不是按照到来的先后顺序,而是按照一定的优先顺序排列的。这个优先顺序可以是元素的大小或者其他规则。如图一所示就是一个堆,堆优先顺序就是大的元素排在前面,小的元素排在后面,这样得到的堆称为最大堆。最大堆中...原创 2018-05-17 16:56:10 · 495 阅读 · 0 评论 -
数据结构-二叉树遍历及应用(非递归版本)
//先序遍历void BinTreePreOrderLoop(BinTreeNode* root){ //空树,直接返回 if(root==NULL) { return ; } //定义一个栈,并初始化 SeqStack stack; SeqStackInit(&amp;amp;amp;stack);...原创 2018-05-05 12:51:52 · 261 阅读 · 0 评论 -
数据结构-排序算法(1)
///////////////////////////////冒泡排序(倒序,从后往前冒)///////////////////////////////void BubleSort(int arr[ ],size_t size){ //判断size是否合法 if( size&lt;=1) { return ; }...原创 2018-06-04 15:26:35 · 234 阅读 · 0 评论 -
数据结构-排序算法(2)
希尔排序 归并排序(递归/非递归) 快速排序(递归/非递归)void Swap(int *a,int *b){ int tmp=*a; *a=*b; *b=tmp;}void ShellSort(int arr[ ],int size){ if( size&lt;=1) { retu...原创 2018-06-04 15:51:01 · 176 阅读 · 0 评论 -
数据结构-哈希表
1 基本原理我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一个元素”分类”,然后将这个元素存储在相应”类”所对应的地方。但是,不能够保证每个元素的关键字与函数值是一一对应的,因此极有可能出现对于不同的元素,却计算出了相同的函数值,这样就产生...原创 2018-05-29 22:57:58 · 140 阅读 · 0 评论 -
数据结构-单链表实现队列的基本操作
头文件typedef char QueueType;typedef struct QueueNode{ struct QueueNode* next; QueueType data;}QueueNode;//创建新节点QueueNode* QueueCreat(QueueType value);//初始化void QueueInit(QueueNode** pp原创 2018-04-19 16:24:58 · 572 阅读 · 0 评论 -
数据结构-二叉树遍历(基于递归实现)
二叉树的存储结构主要了解二叉链表结构,也就是一个数据域,两个指针域,(分别为指向左右孩子的指针)typedef char DataType;typedef struct BinTreeNode{ //左孩子 struct BinTreeNode* pleft; //右孩子 struct BinTreeNode* pright; ...原创 2018-04-30 23:49:39 · 597 阅读 · 0 评论 -
C语言实现通讯录
//基于顺序表实现的简易通讯录-----1 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct stu //定义一个学生信息的结构体类型 { char name[20];原创 2018-03-24 12:12:32 · 647 阅读 · 0 评论 -
数据结构-单链表的基本操作
初始化void SLinkInit(SLinkNode** phead){ assert(phead); *phead=NULL;}打印链表void SLinkPrint(SLinkNode* phead){ if( phead==NULL) { printf("actual:"); ...原创 2018-04-15 22:57:44 · 216 阅读 · 0 评论 -
数据结构-基于双链表实现栈的基本操作
准备工作#pragma once #include <stdlib.h>//#include <stdio.h>typedef char LinkStackType;typedef struct LinkNode{ struct LinkNode* next; struct LinkNode* pre; LinkSta...原创 2018-04-14 23:47:01 · 822 阅读 · 0 评论 -
基于顺序表实现栈的基本操作
栈:什么是栈?又该怎么理解呢?栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。栈就是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来之后才能出来(先进后出)栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,在编原创 2018-04-10 22:33:50 · 801 阅读 · 0 评论 -
顺序表的基本操作
本文目标:实现基于静态数组的顺序表的以下基本操作:创建顺序表#define DyataMaxSize 100 //定义顺序表的大小typedef int DataType; //定义顺序表元素类型typedef struct SeqList //定义一个结构体类型变量{ siz原创 2018-03-28 17:14:37 · 286 阅读 · 0 评论 -
带头结点的双向链表的基本操作
准备工作//带头结点的双向链表#pragma oncetypedef char DataType;typedef struct Node{ DataType data; //数据区 struct Node *next; //指向下一个节点 struct Node *pre; //指向前一个节点}DLinklistNode;//创原创 2018-04-06 00:18:35 · 3813 阅读 · 0 评论 -
数据结构-单链表常见面试题
一、题目 1、从尾到头打印单链表 (两种方法) 2、删除一个无头单链表的非尾节点(不能遍历链表) 3、在无头单链表的一个节点前插入一个节点(不能遍历链表) 4、单链表实现约瑟夫环(JosephCircle) 5、逆置/反转单链表 6、单链表排序(冒泡排序&amp;快速排序) 7、合并两个有序链表,合并后依然有序 8、查找单链表的中间节点,要求只能遍历一次链表 9...原创 2018-04-22 22:44:41 · 236 阅读 · 0 评论 -
数据结构-顺序表实现队列的基本操作
队列的定义队列是另一种限定的数据结构,它只允许在表的一端插入,另一端删除。所以队列具有先进先出的特性。这与我们生活中的排队是一个道理。 在队列中允许删除的一端叫做队头,允许插入的一端叫做队尾。队列分类顺序队列(容易引起假溢出情况:顺序队列因多次入队,出队后出现的尚有存储空间,但不能在进行如队列的操作)优先级队列循环队列本文用顺序表实现队列的基本操作初始化 操作前提...原创 2018-04-19 15:29:59 · 979 阅读 · 0 评论 -
数据结构-二叉搜索树
二叉搜索数 AVL数 红黑树原创 2018-06-15 13:02:10 · 224 阅读 · 0 评论