数据结构
「已注销」
这个作者很懒,什么都没留下…
展开
-
[链表]单链表
#include<stdio.h>#include<stdlib.h> int a[5] = {7, 1, 6, 8, 9}; //数据存放在数组中 typedef struct Lnode //定义链表节点{ int data; //单链表节点的数据域 struct Lnode *next; //点链表节点的指针域 }Lnode, *LinkList;LinkList In原创 2016-10-15 22:54:48 · 367 阅读 · 0 评论 -
[图]图的邻接矩阵下的深搜广搜(超级简单写法)
#includeint n, m; //顶点数, 边数 int G[20][20] = {0};int visited[20] = {0};void DFS(int now){ if(visited[now] == 0) { visited[now] = 1; printf("%d ", now); for(int i = 1; i <= n; i ++) if原创 2016-01-15 12:30:10 · 1735 阅读 · 0 评论 -
[图]邻接矩阵存储并输出
#include#include#include#define MAXSIZE 20typedef struct AMGraph //图的邻接矩阵存储结构 { char ver[MAXSIZE]; int adjmar[MAXSIZE][MAXSIZE]; int vernum, edgenum;}AMGraph, *Graph;/*void each_line(void原创 2016-01-13 01:21:49 · 1995 阅读 · 1 评论 -
[链表]逆转链表
Node* reverse(Node* head){ Node* current = head; Node* reversList = null; while(current) { Node *p = current; current = current->next; p->next = rev转载 2016-01-12 19:04:58 · 391 阅读 · 0 评论 -
[链表]九度OJ 题目1188:约瑟夫环
题目描述:N个人围成一圈顺序编号,从1号开始按1、2、3......顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。请按退出顺序输出每个退出人的原序号。输入:包括一个整数N(1<=N<=3000)及一个整数p。输出:测试数据可能有多组,对于每一组数据, 按退出顺序输出每个退出人的原序号。样例输入:7 3样例输出:3 6 2 7 5 1 4来源:2003-原创 2016-01-10 00:02:40 · 500 阅读 · 0 评论 -
[栈]括号匹配的检验
描述:假设一个表达式或一段程序中含有三种括号:圆括号“(”和“)”、方括号“[”和“]”、花括号“{”和“}”。试写一个程序判别给定的表达式或程序中所含括号是否正确配对出现。输入说明:多组输入数据,第1行为1个正整数n,表明有n组测试数据;其余n行为n组测试数据,每行为一个含有括号的表达式或一段程序。 输出说明:对于每一组测试数据,输出一个right或wrong,表明正确匹配与否。输入样例:3 a原创 2016-01-09 23:45:42 · 605 阅读 · 0 评论 -
[树]二叉排序树的建立与先序遍历
描述:采用二叉链表方式存储二叉排序树。从空树开始,将输入元素按照输入顺序逐个插入一颗二叉排序树,以生成二叉排序树,并输出先序遍历的结果。输入说明第一行为整数n,表示将输入n个数字。第二行为n个整数,为输入数据,n个整数间用空格隔开。输出说明在一行上输出先序遍历这颗二叉排序树的结果,中间用空格隔开。输入范例10 1 8 7 20 4 60 10 100 3 19输出范例1 8 7 4 3 20 1原创 2016-01-11 12:02:50 · 2288 阅读 · 0 评论 -
[树]输出二叉树的节点层数
给出一个二叉树先序遍历序列(没有孩子用空格表示) 先序遍历输出各节点的所在层数#include<stdio.h>#include<stdlib.h>typedef struct BinTNode{ char data; struct BinTNode *lchild, *rchild;}BinTNode, *BinTree;void CreatBinTree(BinTree原创 2016-01-11 02:19:36 · 2629 阅读 · 1 评论 -
最小周期串
描述:如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。输入说明:输入包含多组数据,第一行是数据组数T,接下来有T行,每行为一组数据。 每组数据为一个字符串。输出说明:输出每组字符串的最小周期,每组结果要换行。输入样例:3 HaloHalo GeeGe原创 2016-01-10 01:49:18 · 741 阅读 · 0 评论 -
[栈]将二进制转化为十进制
#include<stdio.h>#include<stdio.h>#include<malloc.h>#include<math.h>#define MAXSIZE 20#define ADD 5typedef struct{ char *top; char *base; int stacksize; }Stack;void Init(Stack *S);i原创 2016-01-09 21:50:06 · 463 阅读 · 0 评论 -
归并排序
1. 目的练习归并排序的算法及其实现练习文件的读入输出2. 内容读取文件in.txt的内容,第一行为数据元素个数n,第二行为n个整数,要求对其用归并排序进行排序,结果保存在out.txt中。3. 思路合并排序(MERGE SORT),合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的原创 2016-01-06 11:37:55 · 337 阅读 · 0 评论 -
魔王语言解释(数组实现栈和队列)
魔王语言解释1. 目的熟悉栈和队列的操作练习数组的使用2. 内容问题描述有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1) α -> β1β2„βm (2)(θδ1δ2„δn)->θδnθδn-1„ θδ1θ 在这两种形式中,从左到右均表示解释。试写一个魔原创 2015-12-19 19:13:27 · 1749 阅读 · 1 评论 -
[图]深搜判断图的连通性
#includeint N, M;int visited[20] = {0};int G[20][20]; int edge = 0;void DFS(int i){ if(visited[i] != 0) return; else { visited[i] = 1; for(int j = 1; j <= N; j ++) if(G[i][j] == 1 &&原创 2016-01-15 17:40:06 · 1111 阅读 · 1 评论