数据结构(c++)
jianbiao1483
这个作者很懒,什么都没留下…
展开
-
【数据结构】选择排序——堆排序
输出堆顶的最大值/最小值后,剩余n-1个元素重建堆,得到次大值/次小值,反复,得到有序序列。只需依次将序号为n/2,n/2-1,....,1的结点为根的子树调整为堆即可。(2)将根结点与左右子树的根结点比较,并与其中小者交换。(1)输出堆顶元素,以堆中最后一个元素替代之。(3)重复上述,直到叶子结点,得到新堆。1、堆的调整(以小根堆为例)原创 2023-01-03 20:36:44 · 172 阅读 · 0 评论 -
【数据结构】选择排序——简单选择排序
(2)从剩余的n-1个记录中找次小的记录,与第二个记录交换。(1)从n个记录中找最小的记录,与第一个记录交换。(3)重复,共进行n-1趟排序后,排序结束。原创 2023-01-01 11:05:45 · 193 阅读 · 0 评论 -
【数据结构】第八章---交换排序
改进:添加一个flag用于标记是否发生交换,若某一趟未发生交换,则之后不需要再进行比较。(1)n个记录,总共需要n-1趟,每次挤出一个最大值。(2)第m趟要比较n-m次。原创 2022-12-30 19:47:19 · 138 阅读 · 0 评论 -
【数据结构】第八章--插入排序
注:第0号位置为“哨兵”原创 2022-12-28 18:30:37 · 100 阅读 · 0 评论 -
【数据结构】二叉排序树的插入、查找
【代码】【数据结构】二叉排序树的插入、查找。原创 2022-12-17 21:34:11 · 289 阅读 · 0 评论 -
【数据结构】第七章:折半查找
【代码】【数据结构】第七章:折半查找。原创 2022-12-10 18:18:24 · 457 阅读 · 0 评论 -
【数据结构】第七章:顺序表查找
查找1-3,每次循环都需要比较两次:(1)ST.R[i].key是否等于key(2)i是否>=1 查找4,在第0位设置监视哨,放置关键字。每次只需比较ST.R[i].key与给定关键字是否相等即可。 代码:查找成功 查找失败原创 2022-12-04 17:28:18 · 404 阅读 · 0 评论 -
【数据结构】无向图邻接表BFS
先访问某一结点的所有邻接点,再依次访问邻接点的邻接点。原创 2022-08-23 17:47:22 · 538 阅读 · 1 评论 -
【数据结构】无向图邻接表DFS
【代码】【数据结构】无向图邻接表DFS。原创 2022-08-23 15:58:41 · 564 阅读 · 0 评论 -
【数据结构】邻接矩阵之深度优先遍历DFS
以某一顶点为起点,深度遍历,v->w1->w2->.......u。回退一步,看是否有其他未被访问的邻接点。原创 2022-08-23 11:32:25 · 5188 阅读 · 0 评论 -
【数据结构】采用邻接表构建无向图
【代码】【数据结构】采用邻接表构建无向图。原创 2022-08-22 11:35:39 · 1933 阅读 · 1 评论 -
【数据结构】采用邻接矩阵表示法创建无向网、无向图、有向图、有向网
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档(∞/权值,对称)2、代码(0/1,对称)(∞/权值,不对称)(0/1,不对称)。原创 2022-08-21 17:55:37 · 8735 阅读 · 2 评论 -
【数据结构】哈夫曼编码
【代码】【数据结构】哈夫曼编码。原创 2022-08-19 11:33:20 · 224 阅读 · 0 评论 -
【数据结构】构造哈夫曼树
代码】【数据结构】构造哈夫曼树。原创 2022-08-18 17:36:18 · 525 阅读 · 0 评论 -
【数据结构】二叉树复制,求深度,结点数
代码】【数据结构】二叉树复制,求深度,结点数。原创 2022-08-15 18:19:12 · 246 阅读 · 0 评论 -
【数据结构】二叉树的层次遍历
代码】【数据结构】二叉树的层次遍历。原创 2022-08-15 12:50:35 · 1485 阅读 · 0 评论 -
【数据结构】顺序循环队列基本操作
代码】【数据结构】顺序循环队列基本操作。原创 2022-08-14 20:30:26 · 414 阅读 · 0 评论 -
【数据结构】中序遍历非递归算法
3)根结点出栈,输出根结点,遍历右子树。(2)根结点进栈,遍历左子树。原创 2022-08-13 11:53:57 · 7715 阅读 · 1 评论 -
【数据结构】二叉树遍历
1)先序遍历 DLR。(2)中序遍历 LDR。(3)后序遍历 LRD。原创 2022-08-12 16:29:16 · 104 阅读 · 0 评论 -
【数据结构】字符串匹配——KMP算法
算法思想:i不回溯,当i所指主串字符与j所指主串字符不相等时,令j=next[j]即可。原创 2022-08-09 11:44:49 · 156 阅读 · 0 评论 -
【数据结构】字符串匹配-BF算法
王卓 数据结构 字符串原创 2022-08-08 12:01:47 · 254 阅读 · 0 评论 -
【数据结构】图书管理系统
#include<iostream>using namespace std;#define MAXSIZE 100struct Book{ char ISBN[20]; char name[50]; int price;};typedef struct{ //顺序表 Book *elem; int length;}SqList;typedef struct LNode{ //链表 Book data; struct LNode *next.原创 2022-03-13 11:48:23 · 3434 阅读 · 0 评论 -
[数据结构]多项式相加--链表实现
算法:1、指针p1、p2指向首元结点2、指针p3指向Pa头结点3、若p1、p2均未到表尾:比较p1、p2所指结点的指数,若p1->expn==p2->expn,系数相加(1)系数不为0,修改p1系数值,删p2(2)系数不为0,删p1,p2若p1->expn<p2->expn,将p1插到p3后若p1-expn>p2->expn,将p2插到p3后4、将非空多项式的剩余段插入到p3后5、删Pb头结点#include<ios.原创 2022-03-12 21:54:32 · 1548 阅读 · 0 评论 -
【数据结构】稀疏多项式的运算--顺序表实现
算法:1、建立空表Lc2、遍历La、Lb表(未到末尾):(1)如果系数相同,系数相加(2)如果系数不同:若La的系数小,把La加入Lc中;若Lb系数小,把Lb加入Lc中3、有一个表已经遍历结束,把还有元素的表加入到Lc中#include<iostream>using namespace std;#define MAXSIZE 100#define OK 1#define OVERFLOW -2typedef struct{ float coef; in.原创 2022-03-09 09:03:25 · 2422 阅读 · 0 评论 -
【案例2.1】多项式合并--顺序表实现
#include<iostream>using namespace std;#define OK 1#define MAXSIZE 100#define OVERFLOW -2typedef struct{ int *elem; int length;}SqList;//初始化int InitList_Sq(SqList &L){ L.elem=new int[MAXSIZE]; if(!L.elem) return OVERFLOW; L.length=0;.原创 2022-03-02 21:57:31 · 280 阅读 · 0 评论 -
有序表的合并
1、用顺序表实现算法:(1)创建空表Lc(2)依次从La或Lb中“摘取”元素值较小的结点插入到Lc表的最后,直至其中一个表变空为止(3)继续将La或Lb其中一个表的剩余结点插入到Lc表的最后//有序表的合并void MergeList_Sq(SqList La,SqList Lb,SqList &Lc){ int *pa,*pb,*pc,*pa_last,*pb_last; pa=La.elem; //指针pa指向La第一个元素 pb=Lb.elem; pa_last=原创 2022-03-02 20:53:01 · 1476 阅读 · 0 评论 -
线性表的合并
算法:1、依次取Lb中的每个元素2、在La中查找该元素,若找不到,将其插入到La最后//合并线性表void Union(SqList &La,SqList Lb){ int La_len=ListLength(La); int Lb_len=ListLength(Lb); for(int i=1;i<=Lb_len;i++){ int e=GetElem(Lb,i); if(!LocateElem(La,e)) ListInsert(La,++La_len,e);原创 2022-02-27 11:15:54 · 344 阅读 · 0 评论 -
双向链表的插入删除
#include<iostream>using namespace std;#define OK 1#define ERROR 0typedef struct DuLNode{ int data; struct DuLNode *prior,*next;}DuLNode,*DuLinkList;//初始化int InitList_DuL(DuLinkList &L){ L=new DuLNode; L->prior=NULL; L->next=N.原创 2022-02-21 21:50:00 · 776 阅读 · 0 评论 -
合并两个 循环单链表(尾指针指向)
#include<iostream>using namespace std;#define OK 1typedef struct Lnode{ int data; struct Lnode *next;}Lnode,*LinkList;//初始化int InitList(LinkList &T){ T=new Lnode; T->next=T; return OK;} //创建循环链表(带尾指针)void CreateList(LinkList &a.原创 2022-02-20 12:56:03 · 1688 阅读 · 0 评论 -
单链表头插法和尾插法
头插法:元素插在链表头部(倒序)尾插法:元素插在链表尾部,需设置尾指针(正序)#include<iostream>using namespace std;#define OK 1typedef struct Lnode{ int data; struct Lnode *next;}Lnode,*LinkList;void Show(LinkList L){ while(L->next){ cout<<L->next->data<原创 2022-02-19 21:34:06 · 904 阅读 · 0 评论 -
【数据结构】单链表代码实现
【王卓-数据结构】单链表基本操作代码实现原创 2022-02-17 23:13:41 · 650 阅读 · 0 评论 -
【数据结构代码实现】1、线性表基本操作
初始化 int InitList_Sq(SqList &L)创建 void CreateList(SqList &L,int a[],int n)显示 void ShowList(SqList &L)判断是否为空表 int IsEmpty(SqList &L)求表长 int GetLength(SqList &L)取元素 int GetElem(SqList &L,int i,int &e)查找 int LocateElem(S原创 2022-02-04 18:58:17 · 2848 阅读 · 0 评论