搜索——图的储存
来源:互联网 发布:淘宝会员等级制度 编辑:程序博客网 时间:2024/05/08 04:00
搜索:搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。
搜索过程实际上是根据初始条件和扩展规则构造一棵
解答树并寻找符合目标状态的节点的过程。
一.主要用图的思想实现搜索
二.图的储存
1.邻接矩阵:用矩阵实现(空间开销大,不能存重边)
/*邻接矩阵储存图*/ #include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int inf = 0x3f3f3f3f;//常熟无穷大 const int maxn = 1e3 + 20;//最大项数 int map[maxn][maxn];//图 int main() {int n = 0;//n条边while(~scanf("%d",&n)){ int x,y,w;//x,y点之间的权值为w for(int i = 0; i<maxn; i++)//图权初始化为0x3f3f3f3f for(int j = 0; j<maxn; j++) { map[i][j] = inf; } //memset(map, inf, sizeof(map));//另初始化 while(n--) { cin>>x>>y>>w; map[x][y] = w;//储存一条边(单向) //map[x][y] = inf//删除一条边 /*注意储存时点的序号是从0还是从1开始的应用时要记得*/ }} return 0;}
2.邻接表(用链表,但是主要是结构体的思想)
#include <stdio.h>#include <stdlib.h>#define MaxVertexnum 100typedef char Vertextype;typedef struct node//边表节点,存储的是顶点的序号以及指向下一个顶点的指针 {int adjvex;struct node* next;//指向边表节点结构体的指针 } EdgeNode; typedef struct//顶点表节点 {Vertextype vertex;//记录定点 EdgeNode* firstedge;//第一条边,调用这个之后直接就当用上面的边表节点 } VertexNode;typedef VertexNode AdjList[MaxVertexnum];//定义指向顶点表的数组数据类型 typedef struct{AdjList adjlist;//上述数组命名adjlist int n, e;//定点数,边数 }ALGraph;void create(ALGraph* G) //构建链表函数 {int i,j,k,w,v;EdgeNode* s;printf("读入顶点数和边数"); scanf("%d%d",&G->n,&G->e);for(i = 0; i<G->n; i++){fflush(stdin);//清空输入缓存区printf("建立顶点表");G->adjlist[i].vertex = getchar();G->adjlist[i].firstedge = NULL;}printf("建立边表\n");for(k = 0; k<G->e; k++){printf("读入(vi-vj)的顶点序号");scanf("%d%d",&i,&j);s = (EdgeNode*)malloc(sizeof(EdgeNode));s->adjvex = j;s->next = G->adjlist[i].firstedge;//插入表头G->adjlist[i].firstedge = s;s = (EdgeNode*)malloc(sizeof(EdgeNode));s->adjvex = i;s->next = G->adjlist[j].firstedge;G->adjlist[j].firstedge = s; }} int main() {int i;ALGraph* G = (ALGraph*)malloc(sizeof(ALGraph));//构建链表 create(G);for(i = 0; i<G->n; i++)//输出(应用){printf("%d->",i);while(G->adjlist[i].firstedge!=NULL){printf("%d->",G->adjlist[i].firstedge->adjvex);G->adjlist[i].firstedge = G->adjlist[i].firstedge->next;}printf("\n");} return 0;}
部分程序转载自链接
1 0
- 搜索——图的储存
- 数据结构之图的储存,搜索
- 关于递归的求水仙花数,网上搜索到的资料,储存起来,以便多次复习——初学者
- 重学数据结构系列之——图的储存
- Android数据储存——文件储存
- Android数据储存——SharedPreferences储存
- Android数据储存——SharedPreferences储存
- Android的数据储存——1
- 图的储存
- 图的储存 模板
- 图的储存方式
- 图的储存结构
- 图的储存
- 网站会记录并储存用户的搜索内容
- 图的邻接表储存。
- 图的储存之邻接矩阵
- 图的常见储存方式
- 继承与派生的——学生信息的储存
- Android状态栏微技巧,带你真正理解沉浸式模式
- Java 中关于String 对象的空对象(null), 空值(""),空格(" ")
- Div弹框
- 第一章 入门示例
- abstract class和interface的区别
- 搜索——图的储存
- Python入门:python实现http透明代理(二)
- 深入浅出WPF-3
- 跳转页面选择与逻辑
- 用CEDET浏览和编辑C++代码
- String类的学习
- org.restlet maven pom.xml配置
- Otsu的C语言实现
- 微信分享