
数据结构与算法
yunhaiC QQ654777694
这个作者很懒,什么都没留下…
展开
-
2级C语言可能没过,数据结构必须开始,第一个目标手写程序突破100行
今天4月1号,2级C刚考过,题目那么简单居然运行程序结果不对,可见基础知识肯定还是有某方面的缺陷.可能没考过吧,没办法的事情,下半年继续考,不过数据结构课程必须开始,这是成为编程高手的必须课程.等数据结构学通了,我要手写500行以上的程序. C语言必然要继续学习的,下半年等我再看那些题目的时候一定要像看小学数学那么简单.头很晕,但是要坚持.没有人会不笑一个失败者,但要不被人永远耻笑就必须原创 2006-04-01 19:55:00 · 1903 阅读 · 0 评论 -
邻接表存储图的建立
#define m 20typedef char datatype;typedef struct node{ int adjvex; struct node *next;}edgenode;#include #include #define m 20typedef char datatype;typedef struct node{ int adjvex; struct node *nex原创 2006-11-14 19:32:00 · 1764 阅读 · 0 评论 -
旅行推销员问题之C语言算法
旅行推销员问题:一位旅行推销员想要访问n个城市中每个城市恰好一次,并且返回到出发点。应如何走才能使总距离最短?其实就是求带权完全无向图中访问每个顶点恰好一次并且返回出发点的总权数最小的回路,即总权数最小的哈密顿回路。思路:把n个城市做全排列,并求出每种排列对应的总距离,然后选择最短的一个。推论:把上面求出的最短哈密顿回路看作一个圆,求出最短哈密顿回路以后,从回路上任一点开始出发而访问每个顶转载 2006-11-23 19:51:00 · 7314 阅读 · 2 评论 -
DFS和BFS
#define maxnode 40#define null 0#define m 20#include #include typedef struct st_arc{int adjvex; int weight; struct st_arc *nextarc;}arcnode;typedef struct{int vertex; struct转载 2006-11-29 19:18:00 · 1412 阅读 · 0 评论 -
write again and again
#include #include typedef struct node{ int data; struct node *next; }*Linklist,Node; Linklist creat(int n) {Linklist head,r,p; int x,i; head=(Node*)malloc(sizeof(Node)); r原创 2006-08-17 10:34:00 · 999 阅读 · 0 评论 -
全国交通咨询模拟程序
#include"stdio.h"#include"stdlib.h"#include"string.h"#define MAX_VERTEX_NUM 18#define NULL 0#define MAX_ARC_SIZE 100#define MAX_ROUTE_NUM 5#include"stdio.h"#include"stdlib.h"#include"string.h"#define转载 2007-01-09 12:16:00 · 10714 阅读 · 13 评论 -
字符串模式匹配
#define m0 100 typedef struct{ char vec[m0]; int len;}orderstring;int position(orderstring *r1,orderstring *r){int i,j,k; for(i=0;r->vec[i];i++) for(j=i;k=0;r->vec[j]==r1->vec[k];j++;k++)原创 2007-04-16 20:12:00 · 1759 阅读 · 0 评论 -
Dijkstra(狄克斯特拉)算法求单源最短通路
typedef enum{FALSE,TRUE}boolean;typedef int dist[m];typedef int path[m];void spath_dij(mgraph g,int v0,path p,dist d){boolean final[m]; int i,k,j,v,min,x; for(v=0;v {final[v]=FALSE; d[v]=g.edges[v0]原创 2007-08-02 20:05:00 · 1960 阅读 · 0 评论 -
二叉树非递归前序遍历表示及其他栈的情况
A B DC E G F按照这棵树来typedef struct bitree{ char data; struct bitree *right; struct bitree *left;}bitree;//下面是他的非递归程序void preorder(bitree *t){bitree st原创 2007-05-15 22:30:00 · 1205 阅读 · 0 评论 -
穿线二叉树(注释了一些有用的解释)
typedef char datatype;typedef struct node{ datatype data; struct node *lchild,*rchild;}bintnode;typedef bintnode *binthrtree;binthrtree root;binthrtree pre=NULL;void createbintree(binthrtree *t)原创 2007-06-11 21:36:00 · 2118 阅读 · 0 评论 -
图的数组表示(邻接矩阵),比书上的一种小改进, 和图的十字链表存储表示解释
typedef struct ArcCell{ VRType adj; //对于无权图,用1或0表示是否相邻;对于带权图,则为权值类型 InfoType *info; //该弧相关信息的指针}ArcCell;AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct{ VertexType vexs[MAX_VERTEX_NUM]; A原创 2007-10-09 22:38:00 · 1606 阅读 · 0 评论 -
图----数据结构图论总结(一)
边 无向图 无向网弧尾 弧头 弧 有向图 有向网完全图 e=n(n-1)/2 有向完全图 e=n(n-1)稀疏图 e稠密图 否则邻接点 关联 度(和v关联的边的数目)度(TD)=出度(OD)+入度(ID)路径路径长度(路径上边的数目)简单路径(若序列中的顶点不重复出现)回路或简单回路(u=w)连通图(若图G中任意两个顶点之间都有路径相通) 连通分量强连通图 强原创 2007-12-12 07:51:00 · 2250 阅读 · 1 评论 -
图----数据结构图论总结(三)
图的存储表示:1.邻接矩阵,2.邻接表,3.有向图的十字链表,4.无向图的邻接多重表1.邻接矩阵#define FINITY 5000#define m 20typedef char vertextype;typedef int edgetype;typedef struct{ vertextype vexs[m]; edgetype原创 2007-12-20 19:22:00 · 2552 阅读 · 0 评论 -
图----数据结构图论总结(二)
图的基本操作 结构的建立和销毁CreateGraph(&G,V,E);DestroyGraph(&G);对顶点的访问操作LocateVex(G,u);GetVex(G,v);PutVex(&G,v,value);对邻接点的操作Firs原创 2007-12-18 19:50:00 · 2617 阅读 · 0 评论 -
八皇后问题
#include #include #define max 4int board[max];void show_result(){int i; for(i=0;i printf("(%d,%d)",i,board[i]); printf("/n");}int check_cross(int n){int i; for(i=0;i {if(board[i]==board[n]||(n-i)=原创 2006-11-02 18:59:00 · 1402 阅读 · 0 评论 -
这次我默一下八种顺序表的操作
我说数据结构没办法学了,人家说简单的还等我学么?这年头创新的人少了,首先要把数据结构变成自己的东西才可以,然后要寻求创新,我要再写一遍void init_sequence_list(sequence_list *slt){slt->size=0;}void insert_sequence_list(sequence_list *slt,datatype x){if(slt->siz原创 2006-04-09 16:42:00 · 1405 阅读 · 0 评论 -
今天看"栈"的内容看的好乱
"栈"的顺序存储结构真是出乎我意料之外,本来大致看了一下觉得很容易明白,细细一看问题还真的很多有一个问题我光发帖子问别人就问了N次datatype get_top(sequence_stack st){if(empty_stack(st)) {printf("/n栈是空的");exit(1);} else return st.a[st.top-1];}这原创 2006-04-11 22:25:00 · 1127 阅读 · 0 评论 -
顺序表操作规则我不知道默写了多少遍
数据结构到出碰钉子,这次顺序表的操作我不知道写了多少遍才勉强记得,我终于知道什么叫看的懂未必写的出了,程序要多看多写多想,还要边看边写边想,外加环境影响,有些事情必须靠意志力.void init_sequence_list(sequence_list *slt){slt->size=0;}void insert_sequence_list(sequence_list *slt,data原创 2006-04-08 17:42:00 · 1628 阅读 · 0 评论 -
刚刚有点程序的苗头,不过入门真的不容易
入门难,就算理解的写出了第一次,未必能写出第二次,就算写出了第二次也未必能保证每一个标点符号每一个变量都准确无误,至少是在理解的基础上未必能写的没有任何错误写东西不熟练导致的根本就是写不出,要写,要练,要思考,人就是练出来的.float readnumber(char f[],int *i){{int k=0; float x=0.0;while(f[*i]>=0&&w原创 2006-04-17 18:16:00 · 1309 阅读 · 0 评论 -
二叉树的递归建立
typedef struct node{ char data; struct node *lchild; struct node *rchild;}node,*bintree;bintree root;void createtree(bintree *t){char ch; if((ch=getchar())== ) *t=NULL; else {*t=(node *)malloc原创 2006-09-10 09:12:00 · 1541 阅读 · 0 评论 -
二叉树中序建立递归算法,完整程序
#includestruct tree //声明树的结构{ struct tree *left; int data; struct tree *right;};typedef struct tree treenode;type treenode *b_tree; //声明二叉树链表//插入二叉树的节原创 2006-09-10 16:59:00 · 3904 阅读 · 0 评论 -
完全正确的十进制转换其他任何进制,朋友帮我改的
#include"stdio.h"#define maxsize 100typedef struct stack{ int a[maxsize]; int top;}stack;void init_stack(stack &sq){sq.top=0;}int stackempty(stack sq){ return(sq.top?0:1);}void push(stack &sq,in原创 2006-05-07 13:50:00 · 1279 阅读 · 0 评论 -
十进制转换成二进制的程序
void jinzhizhuanhuan(int N,int B){int i; stack init_sequence_stack(sequence_stack &sq); while(N) {push(&sq,N%8); N/8;} while(!stackempty(&s)) {i=pop(&s); prinf("%d",i);}}#define maxsize 100typed原创 2006-05-07 10:15:00 · 2439 阅读 · 0 评论 -
I will write my article use english complelely.
This is my aim to use english write article.I know that it is so hard ,but i will remorseless to do.I think it is good for my english.and the english three grade english examination will begin,I hav原创 2006-05-17 21:55:00 · 1381 阅读 · 0 评论 -
递归的汉诺塔
递归的汉诺塔,就算是我写的吧,网上很多,最近一个月研究题目,可以多发点文章了#include static void move(const char x,const int n,const char z){printf("disc %d from %c to %c/n",n,x,z);}static void hanoi(const int n,const char x,const char原创 2006-05-28 21:03:00 · 1131 阅读 · 0 评论 -
阿克曼递归函数
#include #include int Ack(int m,int n){ if(m==0) { if(n==0) return Ack(m-1,1); else return n+1; } else if(m>0&&n>0) {return Ack(m-1,Ack(m,n-1)); }}int ma原创 2006-06-05 19:39:00 · 2582 阅读 · 0 评论 -
约瑟夫问题还有细节没有解决
#include #include typedef struct LNode{ int num,pwd; struct LNode *next;}LNode,*LinkList;int main(void){ int i,j,m,n; //m为报数上限,n为人原创 2006-06-08 21:12:00 · 1106 阅读 · 0 评论 -
三天了
三天了,表插入排序和shell排序还没能弄明白原创 2006-06-19 20:12:00 · 986 阅读 · 0 评论 -
分治的实现::递归程序设计
【分治算法】是一种思想,你拿到的问题往往不会是很简单的事情,而再复杂再难的问题都可以分解成一些有限的简单问题的和,这就是分治法的原理。举个最简单的例子,计算阶乘之和n!+(n-1)!+...+1!:n可以取大取小,问题的范围可以大可以小,如果小就比较容易,比如1!=1这是己知,如何将大问题化成小问题,找它们之间的联系:如果n=k已经解决,那么n=k+1能否解决,如何解决?很显然:n=k+1的情况就转载 2006-06-16 23:18:00 · 2064 阅读 · 0 评论 -
图----数据结构图论总结(四)
文章都是摘录的网络中比较好的代码,因为图的四种存储方式中有两种方式(邻接矩阵和连接表)普通书上都有以此建立图的代码,所以在此不在累赘列出*******************************************************************************建立无向图的邻接多重表题目:编写一个算法由依次输入的顶点数目,边的数目,各顶点的信息和各条边的原创 2008-01-09 20:03:00 · 1835 阅读 · 2 评论