![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 94
Dutkig
奔跑吧, 用绝望追不上的速度。
展开
-
(数据结构)顺序表操作——C实现
顺序表特点:1.逻辑相邻,物理也相邻2.支持存放,插入,删除,修改,读取数据等操作3.一位数组是一种特殊的顺序表,但顺序表不是数组顺序表的结构设计typedef struct SqList{ int *elem;//存放动态内存的地址 int length;//有效数据个数 int listsize;//总格子数}SqList;其他参数typedef SqList * PSqList;//#define INIT_SIZE 10 //初始化大小顺序表操作初始化voi原创 2020-07-15 23:36:16 · 355 阅读 · 0 评论 -
(数据结构)带头结点的单链表操作——C实现(新增一些面试经典题目)
带头结点的单链表特点:逻辑相邻,物理不相邻头结点:只在其指针域存放下一结点的地址,用于标记链表的起始(第一个有效数据节点的地址),不存数据。头结点的空间:栈区或全局区有效数据的空间:堆区声明单链表结点类型typedef struct LNode{ int data;//数据域 struct LNode* next;//指针域}LNode,* Linklist操作链表初始化//链表初始化void InitLinkList(Linklist plist){ assert(pli原创 2020-07-21 22:29:20 · 1312 阅读 · 0 评论 -
(数据结构)不带头结点的单链表操作——C实现
不带头结点的单链表难点:1.二级指针,头指针在栈区,操作方法如果有可能修改头指针,则需要传递头指针的地址2.插入和删除对于头插和尾删的特殊处理声明单链表结点类型typedef struct LNode{ int data;//数据域 struct LNode* next;//指针域}LNode,* Linklist操作链表初始化void InitList(Linklist *plist){ assert(plist != NULL); if(plist == NULL)ret原创 2020-07-24 11:22:59 · 918 阅读 · 0 评论 -
(数据结构)带头结点的双向链表操作——C实现
带头结点的双向链表声明单链表结点类型typedef struct DuLNode{ int data; struct DuLNode *prior; struct DuLNode *next;}DuLNode,*DuLinkList;操作链表初始化//链表初始化void InitDuLinkList(DuLinkList plist){ assert(plist != NULL); if(plist == NULL) { return; } plist->pri原创 2020-07-31 10:16:19 · 438 阅读 · 0 评论 -
(数据结构)带头结点的双向循环链表操作——C实现
带头结点的双向链表声明单链表结点类型//定义结点结构typedef struct DCNode{ int data; struct DCNode *prior, *next;}DCNode, *DCLinkList;操作链表初始化//链表初始化void InitDCLinkList(DCLinkList plist){ assert(plist != NULL); if(plist == NULL) { return; } plist->prior =原创 2020-08-03 12:18:58 · 1253 阅读 · 0 评论 -
(数据结构)顺序栈操作——C实现(部分C++)
栈特点:1.先进后出2.分为顺序栈和链栈3.对于链栈来说使用头插头删法:(建议使用这种方式)栈顶就是头结点,没有栈底(NULL)使用尾插尾删法:栈底就是头结点,栈顶:重新定义一个指针指向最后一个结点删除得从头结点开始找到当前栈顶的前驱结点O(n)顺序栈的结构设计typedef struct Stack{ ElemType *elem; int top;//下标,栈顶指针 int stacksize;}SqStack,*原创 2020-08-06 16:36:01 · 376 阅读 · 0 评论 -
(数据结构)循环队列操作——C实现
队列特点:1.先进先出2.对队列的操作可以理解为头删+尾插在这里我们主要实现循环队列循环队列的结构设计typedef struct Que{ Elemtype *data; //存储空间 int front; int rear;}SeQueue;其他参数#define MAXQSIZE 10typedef int Elemtype;初始化void InitQue(SeQueue *que){ assert(que != NULL);原创 2020-09-09 13:07:01 · 323 阅读 · 3 评论 -
(数据结构)串匹配算法——BF算法和KMP算法
串匹配在主串中查找子串的位置BF算法定义两个控制变量i和j,i初始化在主串S串的0号位置,j初始化在子串P串的0号位置。若比较得出该位置主串和子串的元素相等,那么i++,j++;若比较得出该位置主串和子串的元素不相等,i回退到本次比较开始的下一个位置,j回退到0位置,再开始比较;(这里隐含了一种穷举的思想:相当于S串以每一个字符作为开始,和P串进行比较,直到找到为止)效率分析时间复杂度O(m*n)空间复杂度O(1)int BF(const char *str,const char *s原创 2020-09-18 15:03:07 · 466 阅读 · 0 评论