![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Juice_p
这个作者很懒,什么都没留下…
展开
-
稀疏矩阵三元组转化
Description 利用原稀疏矩阵的三元数组a,求转置矩阵的三元数组b,并将其规格化,即按行号递增,若行号相同则按照列号递增的顺序。参照课本P93.94例程Input 第一行有三个整数m,n,c表示矩阵的行数和列数以及原三元组a的个数,(m,n 处理到文件结尾处Output 输出三元数组b,每个三元组一行。Sample Input 2 2 2原创 2016-10-21 23:22:59 · 1496 阅读 · 0 评论 -
EOJ 1807 快速排序
#include #include #include #include #include #include #include#includevoid qsort(int a[],int low, int up){ int i,j; int t; if(low<up)//low<up时才有效 { i=low;//令i,j分别取此时的最原创 2016-12-27 20:20:07 · 431 阅读 · 0 评论 -
EOJ 1808 冒泡排序
#include #include #include void sort(int a[],int n){ int i,j,t; for(i=0;i<n-1;i++)//共执行n-1遍 { for(j=0;j<n-1-i;j++)//每次从0开始执行到n-1-j { if(a[j]>a[j+1])//把a[j]和原创 2016-12-27 20:34:04 · 354 阅读 · 0 评论 -
EOJ 1809 询问
#include #include #include int a[1000005];int comp(const void*a,const void*b){ return *(int*)a-*(int*)b;//若a-b>0,就调用qsort交换位置}int main(){ int n,k; scanf("%d",&n);//有n个数待排序原创 2016-12-27 21:40:03 · 297 阅读 · 0 评论 -
EOJ 1811 树的遍历
#include #include #include struct DNODE//构建层号标示法的节点{ int lev; char data;};struct Node//构建树的节点{ int lev; char data; Node* parent; Node* child[30]; Node(DNODE a)//树的节点原创 2016-12-27 21:43:52 · 395 阅读 · 0 评论 -
EOJ 1812 二叉树的深度
#include #include #include struct tree//构建二叉树的节点{ int lch,rch;};tree t[10005];//最多有10000个元素int max(int a,int b){ return a>b? a:b;//返回较大的数的函数}int dfs(int n)//dfs计算深度{ return n?ma原创 2016-12-28 15:42:10 · 277 阅读 · 0 评论 -
EOJ 1801 环形队列
Description 实现环形队列(MAXN不超过100001),要求能够进行进队出队操作,参考课本P15页例程。Input 初始时,队列为空。第一行有一个整数q,表示操作的个数,接下来的q行里,每行格式如下:enqueue xxx, 表示把整数xxx进队;dequeue, 表示出队.Output 对于每次出队操作,打印出队元素,如出队不成功,打印原创 2016-12-20 10:28:59 · 1086 阅读 · 0 评论 -
EOJ 1802 铁路调度
Description 如下图,表示一个铁路调度站,为栈式结构,所有的火车必须右端进去并且从左端离开,现在有n(0 < n < 10)列火车要进行调度,按照进入的顺序从1到n进行编号。对于一个给定的一个出站序列,你需要判断是否是一个合法的序列。例如: n = 4, 出站序列为 4321, 这是合法的,1234依次进栈,再依次出栈得到4321Input 输入第一行是一个整数k原创 2016-12-20 11:15:09 · 1501 阅读 · 0 评论 -
EOJ 1803 link-list
Description 实现线性链表的创建于插入(插入到已有元素之后)。Input 第一行有一个整数n( 0 第三行有一个整数q,表示插入操作的个数。接下来q行里每行内有两个整数,第一个整数为链表中已经出现的元素,第二整数是要被插入的元素, 并且数据保证链表中始终不会出现相同的元素。Output 对于每次操作,将链表从头到尾打印出来,整数间用空格隔开。原创 2016-12-20 11:17:39 · 384 阅读 · 0 评论 -
EOJ 1813 树重建
#include #include #include typedef struct node//构建二叉树的节点{ struct node*left; struct node*right; char ele;}Tree;void last(char *mid,char *pre,int len){ if(len==0)//如果长度为0,直接返回原创 2016-12-30 22:50:22 · 355 阅读 · 0 评论 -
EOJ 1814 完全二叉树?
#include #include #include int main(){ int n,r; scanf("%d%d",&n,&r);//共有n个节点,r为树根 int i; int degree[1030],a,b,flag=0;//flag用来判断最终树的状态 memset(degree,0,sizeof(degree));//将保存节点的度的原创 2016-12-31 09:33:42 · 324 阅读 · 0 评论 -
EOJ 1815 Huffman树
#include #include #include #define max 1005struct node//建立二叉树{ int data; struct node*lchild; struct node*rchild;};typedef struct node NODE;int a[max];int w[2*max-1];//内部节点外部节点数目之和原创 2016-12-31 09:34:34 · 383 阅读 · 0 评论 -
EOJ 1816 连通?
#include #include #include using namespace std;struct l_node{ int ver; struct l_node *link;//建立邻接表的结构};typedef struct l_node L_NODE;typedef struct//图的边存储结构{ int ver1; int ver2原创 2016-12-31 10:55:49 · 357 阅读 · 0 评论 -
EOJ 1806 选择排序
#include #include #include void selection_sort(int* a,int n){ int i,j,k,t; for(i=0;i<n-1;i++)//0到n-2共n-1次循环 { k=i; for(j=i+1;j<n;j++)//从i+1一直寻找到an-1 {原创 2016-12-25 00:12:00 · 351 阅读 · 0 评论 -
EOJ 3179 简单的匹配
#include #include #include #define maxn 100#define maxm 30char t[maxn],p[maxm];int simple_match(char t[],char p[],int n,int m){ int i,j,k; for(i=0;i<=n-m;i++)//从0一直找到n-m,因为m为要查找数组的长度原创 2017-01-03 20:56:31 · 368 阅读 · 1 评论 -
EOJ 1800 线性表的删除
参照sq_delete函数,对一个n不超过1024的线性表进行删除操作。Description 实现一个线性表:参照课本P5上的sq_delete函数,对一个n不超过1024的线性表进行删除操作Input 第一行有一个整数n,表示线性表的大小,第二行有n个整数,分别是list1,list2...listn。第三行有一个整数q,表示q次删除操作,接下来q行,每原创 2016-10-23 00:05:19 · 1069 阅读 · 0 评论 -
对给定链表进行插入排序。
struct node{ int data; struct node* rlink; struct node* llink;};typedef struct node NODE;void insertion_sort(NODE *head,int n){ NODE *p,*q; int t; for(p=head;p!=NULL;p=p->原创 2016-10-18 23:17:49 · 431 阅读 · 0 评论 -
栈的入栈出栈操作
#include #define max 26char stack[max];int top=0;int push(char x){ if(top>=max) return 1; stack[top++]=x; return 0;}int pop(){ if(top==0) return 1; top=top-原创 2016-10-19 19:33:24 · 1018 阅读 · 0 评论 -
双栈实现算数表达式
双栈算术表达式求值算法源代码是java实现的,先把他改成cpp实现。原理大家应该都懂,就是两个栈,一个保存读取式子的符号,遇到“(”不读,遇到“)”进行操作,其他符号保存。另一个栈保存每次读到的数字。因为每次读到)时候,都要进行一次操作,而操作对象就是最小的那对括号里面的数字,也就是第二个栈顶保存的两个元素,所以可操作。#include #include #include原创 2016-11-01 13:41:35 · 1113 阅读 · 1 评论 -
单链表的创建与删除
#include #include #include #include #include #include #include#includetypedef struct node{ char data; struct node*link;}NODE;NODE * creat(int n){ int i; NODE *head,*p,*q;原创 2016-11-02 15:23:08 · 253 阅读 · 0 评论 -
EOJ 1804 string
#include #include #include #define max 1025char *strca(char *a,char *ss)//把字符串ss连接到被操作的字符串之后{ int i,j,k; i=strlen(a);//测量原字符串和新加的字符串的长度 j=strlen(ss); for(k=0;k<=j;k++) {原创 2016-12-21 17:42:20 · 339 阅读 · 0 评论 -
EOJ 1818
#include #include #include #include #include #include #include #include #include #include #define maxn 105#define INF 0x3f3f3f3fusing namespace std;typedef long long LL;int m[maxn][max原创 2017-01-02 14:26:34 · 436 阅读 · 0 评论 -
EOJ 1819 询问
#include #include int a[5000000] = { 0 };int main(){ int m, n; scanf("%d%d", &m, &n);//共有m个数,输出最小的n个 getchar();//读入换行符 int i, j, t; for (i = 0; i<m; i++) { char c;原创 2017-01-02 16:37:25 · 305 阅读 · 0 评论 -
EOJ 3174 入栈出栈
#include #include #include char stack[1500];//栈数组int top=0;//栈顶int push(char x){ if(top>=1025)//栈满,入栈失败 return 1; stack[top++]=x;//否则入栈,先入栈后top加一 return 0;}int pop(){原创 2017-01-03 20:30:49 · 325 阅读 · 0 评论 -
EOJ 3176 链栈
#include #include #include struct node{ int data; struct node *link;};typedef struct node NODE;NODE *head=NULL;void push(char x){ NODE *p; p=(NODE*)malloc(sizeof(NODE)); p原创 2017-01-03 20:43:56 · 253 阅读 · 0 评论 -
EOJ 3177 顺序查找
#include #include #include int a[1000];int serach(int a[],int x,int n){ int i; for(i=0;i<n;i++)//顺序查找 { if(a[i]==x)//找到要查找的元素,返回下标 return i; } if(i==n)//如果原创 2017-01-03 20:48:57 · 274 阅读 · 0 评论 -
EOJ 3178 二分查找
#include #include #include #define max 1000int a[max];int bisect(int a[],int n, int v)//定义二分查找函数{ int i,j,m; i=0;//i为开始 j=n-1;//j为结束 while(i<=j) { m=(i+j)/2;//m为i和j中原创 2017-01-03 20:53:05 · 343 阅读 · 0 评论 -
EOJ 1817 最短路
#include #include #include #include #include #include #include#include#define MAXINT 9999999#define MAXN 1800typedef int MAT[MAXN][MAXN];//定义二维数组,用以存储邻接矩阵MAT cost;int dist[MAXN],pre[MAXN],原创 2017-01-01 14:28:10 · 420 阅读 · 0 评论