
数据结构
代维7
这个作者很懒,什么都没留下…
展开
-
拓扑排序(邻接表)
1.实验目的1)掌握图的存储结构及其基本操作,学会定义图的邻接表存储结构,并能在实际中灵活应用;(2)掌握拓扑排序算法;(3)通过本实验的具体应用实例,灵活应用拓扑排序并进一步巩固队列/栈的运用。2.实验内容用邻接表形式存储以下有向无环图,进行拓扑排序,输出相应拓扑序列。若图中每个顶点都在拓扑序列中,说明图中无环。1.实验目的1)掌握图的存储结构及其基本操作,学会定义图的邻接表存储结构,并能在实际中灵活应用;(2)掌握拓扑排序算法;(3)通过本实验原创 2021-12-03 18:06:32 · 1688 阅读 · 0 评论 -
图的应用——Prim算法最小生成树
1.实验目的(1)掌握图的相关概念,包括图、有向图、无向图、子图、连通图、度、入度、出度、简单回路、环等;(2)掌握图的各种存储结构,包括邻接矩阵和邻接表等;(3)掌握图的基本运算,包括创建图、输出图、深度优先遍历、广度优先遍历等;(4)掌握图的其他运算,包括最小生成树、最短路径、拓扑排序和关键路径等算法。2.实验内容利用Prim算法求网的最小生成树。要求和提示:设图的顶点数为10个。为简单起见,网中边的权值设成小于100的整数,可利用C语言的rand()函数产生。3原创 2021-11-24 23:22:53 · 755 阅读 · 0 评论 -
二叉树应用——哈夫曼编码
1.实验目的(1)掌握树和二叉树的特点、逻辑结构和物理实现;(2)掌握实际问题中二叉树的应用(3)掌握哈夫曼树及哈夫曼编码在实际问题中的应用。2.实验内容设要传输的字符集D={ C,A,S,T,;},字符出现频率 w={ 2,4,2,3,3 },若电文为:CAS;CAT;SAT;AT,输出该电文的哈夫曼序列。#include<bits/stdc++.h>using namespace std;typedef struct{ int weig...原创 2021-11-14 22:03:44 · 1673 阅读 · 3 评论 -
数据结构实验报告——基于三元组顺序表的矩阵转置
1.实验目的(1)熟悉多维数组的逻辑结构特征及其存储方式;(2)熟悉特殊矩阵和稀疏矩阵的压缩存储方法及概念;实验内容(1)编程实现基于三元组顺序表的矩阵转置。(2)编程实现基于三元组顺序表的快速矩阵转置。3.源程序和实验结果编程实现基于三元组顺序表的矩阵转置。/*6 6 81 2 121 3 93 1 -33 6 144 3 245 2 186 1 156 4 -7*/#include<stdio.h>#include<s.原创 2021-11-09 22:31:31 · 1724 阅读 · 0 评论 -
稀疏矩阵转置+快速转置代码实现
void TransposeSMatrix(TSMtrix M,TSMtrix &T)//三元组顺序表{ M.mu = T.nu,M.nu = T.mu,T.tu = M.tu; int q = 1; for(int col = 1;col <= M.nu;col++) for(int p = 1;p <= M.mu; p++) { if(M.data[p].j == col) {.原创 2021-10-23 22:06:57 · 275 阅读 · 1 评论 -
数据结构实验报告——约瑟夫问题(循环链表)
1.实验目的(1)熟悉上机环境,掌握上机操作方法和步骤;(2)掌握线性表的特点、逻辑结构和物理实现;(3)掌握单向链表的建立、插入、删除等基本操作的实现;(4)掌握循环链表的建立、插入、删除等基本操作的实现。实验内容用循环链表求解约瑟夫问题。。约瑟夫问题:n 个人围成一个圆圈,首先第1个人开始,一个人一个人顺时针报数, 报到第m个人,令其出列;然后再从下一个人开始,从1顺时针报数,报到第m个人,再令其出列,…,如此下去, 直到圆圈中只剩一个人时,此人即为优胜者。例如:n=8原创 2021-10-11 22:49:48 · 3370 阅读 · 0 评论 -
二叉树链式存储
struct ElemType{ int value;};typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;BiTree root = NULL;root = (BiTree) malloc(sizeof(BiTNode));root -> data = {1};root -> lchild = NULL;root ->.原创 2021-09-13 14:10:28 · 240 阅读 · 0 评论 -
单链表插入 删除元素
Status ListInsert_L(LinkList &L, int i, ElemType e){ p = L; j = 0; while(p&&j<i-1) { p = p->next; j++; } if(!p|| j > i-1) return ERROR; s = (LinkList)malloc(sizeof(LNode)); s->data =.原创 2021-09-09 09:45:06 · 169 阅读 · 0 评论 -
GetElem单链表实现
Status GetElem L(LinkList, int i, ElemType &e){ p = L->next; j = 1; while(p&&j<i) { p = p->next; j++; } if(!p||j > i) return ERROR; e = p->data; return OK;}原创 2021-09-08 21:15:05 · 1323 阅读 · 0 评论 -
新元素入队
void EnQueue(:inkQueue &Q, ElenType x){ LinkNode *s=(LinkNOde *)malloc(sizeof(LinkNode)); s->data=x; s->next=NULL; Q.rear->next=s; Q.rear=s;}//不带头节点void EnQueue(LinkQueue &Q,Elemtype x){ LinkNode *s=(LinkNOde.原创 2021-09-08 11:42:26 · 149 阅读 · 0 评论 -
线性表删除
Status ListDelete Sq(SqLIst &L, int i; ElemType &e){ if(i < 1 ||i > L.length + 1) return ERROR; p = &(L.elem[i-1]); e = *p; q = L.elem + L.length - 1; for(++p; p<= q; ++p) *(p-1) = *p; --L.length; return O.原创 2021-09-06 15:38:42 · 154 阅读 · 0 评论 -
顺序表初始化
Stasus InitLIst( Sqlist &L){ L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem) exit(OVERLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK;}原创 2021-09-06 15:03:37 · 294 阅读 · 0 评论 -
数据结构例2-1
void union(List &La, List Lb){ La_len = ListLength(La); Lb_len = ListLength(Lb); for(int i = 1; i <= Lb_len; i++){ GetElem(Lb , i, e); if(!LocateElem(La, e, equal)) ListInsert(La, ++La_len, e); }}原创 2021-09-06 14:35:56 · 241 阅读 · 0 评论 -
顺序表实现——动态分配
#include<bits/stdc++.h>#define InitSize 10//默认长度using namespace std;typedef struct{ int *data;//动态分配数组指针 int MaxSize;//顺序表最大容量 int length;//顺序表当前长度}SeqList;void InitList(SeqList &L){ L.data=(int*)malloc(InitSize*sizeof(int.原创 2021-09-02 16:28:20 · 229 阅读 · 0 评论