数据结构
刻骨铭心99
这个作者很懒,什么都没留下…
展开
-
建立链表快速查找中间结点的值并显示
#include#include#include#include#includestruct node { int data; //elementype表示一种数据类型,可能是int/char等等 struct node *next; //next 指针,用于链表结构指向下一个节点 }; typedef struct node node; //重定义stru原创 2014-12-17 19:08:27 · 1066 阅读 · 1 评论 -
折半查找法(迭代)
#includeint bin_search(int num[],int low,int high,int key){ int mid ; while(high>=low) { mid = (high+low)/2; if(num[mid] == key) { return mid; } else if(num[mid] < key) {原创 2015-01-19 13:47:24 · 347 阅读 · 0 评论 -
中缀表达式变后缀表达式
#include#include#includetypedef char ElemType ;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct{ ElemType *base; ElemType *top; int stackSize;}sqStack;void initStack(sqS原创 2015-01-18 20:33:54 · 335 阅读 · 0 评论 -
队列输入输出
#include#include#includetypedef char ElemType;typedef struct QNode{ ElemType data; struct QNode *next;}QNode, *QueuePtr;//typedef *QNode *QueuePtr;typedef struct{ QueuePtr front,rear;}LinkQ原创 2015-01-18 22:31:12 · 2329 阅读 · 0 评论 -
循环队列输入输出
#include#include#includetypedef char ElemType;#define MAXSIZE 5//事实只存了4个typedef struct{ ElemType * base; int front; int rear;}cycleQueue;void InitQueue(cycleQueue *q){ q->base = (ElemType原创 2015-01-19 10:46:38 · 2243 阅读 · 0 评论 -
折半查找法(递归)
#includeint bin_search(int num[],int low,int high,int key){ int mid; if(high >= low) { mid = (high+low)/2; if(num[mid] == key) { return mid; } else if(num[mid] > key) { return原创 2015-01-19 13:59:43 · 508 阅读 · 0 评论 -
二叉树的创建和前序遍历
#include#includetypedef char ElemType;typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//创建一个二叉树//前序变历输入void CreateBiTree(BiTree *T){ char c; scan原创 2015-01-23 16:41:32 · 408 阅读 · 0 评论 -
线索二叉树(中序索引)
#include#include#includetypedef char ElemType;//线索存储标志位//Link(0):指向左右孩子//Thread(1):指向前驱后继typedef enum {Link,Thread}PointerTag;typedef struct BiThrNode{ char data; struct BiThrNode *lchild,原创 2015-01-23 21:36:32 · 550 阅读 · 0 评论 -
用KMP算法查找字符串中字串位置
#include//i(后缀)//j (前缀)void get_next(char* T,int *next){ int i = 1; int j = 0; next[1] = 0; while(i<T[0]) { if(j == 0|| T[i] == T[j]) { i++; j++; if(T[i] != T[j]) { n原创 2015-01-22 21:35:42 · 948 阅读 · 0 评论 -
利用递归反向输入一段字符
利用递归反向输出一段字符串#includevoid print(){ char a; scanf("%c",&a); if(a != '#') { print(); } if(a != '#') { printf("%c",a); }}int main(){ print(); return 0;}原创 2015-01-19 11:30:18 · 467 阅读 · 0 评论 -
逆波兰表达式
逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。#include#include#include#include#include/*注意编译时命令为 gcc s原创 2014-12-23 16:36:53 · 324 阅读 · 0 评论 -
BintoHex二进制到十六进制(栈)
#include#include#include#include/*注意编译时命令为 gcc stank.c -lm加上编译的时候链接数学库*/typedef char ElemType ;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct{ ElemType *base; ElemType原创 2014-12-22 20:52:23 · 867 阅读 · 0 评论 -
单向链表的创建与打印
最近在学数据结构,以前学校学的太水了,自己重新看一遍吧,先从最简单的开始吧,来个单向链表的创建与打印 #include#include struct node { int data; //elementype表示一种数据类型,可能是int/char等等 struct node *next; //next 指针,用于链表结构指向下一个原创 2014-12-17 16:50:26 · 387 阅读 · 0 评论 -
约瑟夫问题(循环链表)
#include#include struct node { int data; //elementype表示一种数据类型,可能是int/char等等 struct node *next; //next 指针,用于链表结构指向下一个节点 }; typedef struct node node; //重定义struct node类型为node node* Cre原创 2014-12-19 22:27:48 · 305 阅读 · 0 评论 -
拉丁方阵问题
拉丁方阵问题 拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,并且每种元素在一行和一列中 恰好出现一次。著名数学家和物理学家欧拉使用拉丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此而得名。#include#include struct node { int data; //elementype表示一种数据类型,可能是int原创 2014-12-20 14:02:22 · 979 阅读 · 0 评论 -
双向循环链表
要求实现用户输入一个数使得9个数字的排列发生变化,例如用户输入3,输出结果:345678912同时需要支持负数,例如用户输入-3,输出结果:765432198#include#include struct dualnode { int data; //elementype表示一种数据类型,可能是int/char等等 struct dualnode *next原创 2014-12-20 22:29:40 · 394 阅读 · 0 评论 -
维吉尼亚加密
Vigenere(维吉尼亚)加密:当输入明文,自动生成随机密匙匹配明文中每个字母并移位加密。#include#include#include#include#include struct dualnode { char data; //elementype表示一种数据类型,可能是int/char等等 struct dualnode *next; //原创 2014-12-21 14:14:20 · 705 阅读 · 0 评论 -
约瑟夫问题升级版
编号为1~N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数,可以自由输入),开始人选一个正整数作为报数上限值M,从第一个人按顺时针方向自1开始顺序报数,报道M时停止报数。报M的人出列,将他的密码作为新的M值,从他顺时针方向上的下一个人开始从1报数,如此下去,直至所有人全部出列为止。 #include#include struct node { int data;原创 2014-12-20 11:13:33 · 538 阅读 · 0 评论 -
魔术师发牌问题
魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下。对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示。”魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2,将第一张牌放在这些牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上这样依次进行将13张牌全部翻出,准确无误。#include#原创 2014-12-20 13:30:17 · 373 阅读 · 0 评论 -
BintoDec二进制转换为十进制(栈)
#include#include#include#include/*注意编译时命令为 gcc stank.c -lm加上编译的时候链接数学库*/typedef char ElemType ;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct{ ElemType *base; ElemType原创 2014-12-22 19:43:35 · 1407 阅读 · 0 评论 -
马踏棋盘
#include#include#define X 8#define Y 8int chess[X][Y];void print(void);//找到基于(x,y)位置的下一个可走的位置int nextxy(int *x,int *y ,int count){ switch(count) { case 0: if(*x+2=0&&chess[*x+2][*y-1原创 2015-01-25 18:11:57 · 500 阅读 · 0 评论