数据结构
夏代有工的玉
好好学习,记录学习轨迹
展开
-
小结1
1.完全平方数:一个数如果是另一个整数的完全平方,那么这个数称为完全平方数。 2.加9算法:(a+9)/10+(b+9)/10+(c+9)/10 3输入输出: 1.c语法 while (scanf(“%d %d”,&a,&b)!=EOF) { ….. }2.c++语法 while(cin>>a>>b) { …. } 4.getline(char line[],int size原创 2017-08-05 20:52:20 · 197 阅读 · 0 评论 -
有理数的相关问题总结
有理数的相关问题总结1. 有理数加法 (15分)本题要求编写程序,计算两个有理数的和。输入格式:输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。输出格式:在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。输入样例1:1/3 1/6 输出样例1:1/2 输入样例2:4/3 2/3 输原创 2017-08-05 14:28:50 · 477 阅读 · 0 评论 -
栈的应用之表达式求值
前言:运用栈对后缀表达式求值比较简单,在日常应用中有必要将中缀表达式转换为后缀表达式来处理。代码展示:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>#include <math.h>#include<iostream>using namespace std;struct stackn原创 2017-08-21 18:05:05 · 320 阅读 · 0 评论 -
单链表的相关操作之创建
单链表的创建带头结点不带头结点代码示例#include<iostream>#include<cstdio>using namespace std;struct ListNode{ int val; ListNode *next;};//带头节点的创建ListNode * CreatelistisNode(ListNode *L){ if(L==NULL)原创 2017-08-07 11:46:14 · 265 阅读 · 0 评论 -
选择排序
选择排序简单选择排序二元选择排序 代码示例:/*选择排序算法*/#include<iostream>#include<cstdio>#define maxn 1000using namespace std;void select_sort1(int *a,int n);void select_sort2(int *a,int n);void output(int *a,int原创 2017-08-05 20:47:03 · 245 阅读 · 0 评论 -
排序问题之冒泡(一)
冒泡排序思路:**1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。****#include<iostream>#include<cstdio原创 2017-08-05 18:21:34 · 319 阅读 · 0 评论 -
带头结点双循环链表
初始化void DLinkListInit(DLinkLIst &L){ L=new node; L->next=L; L->prior=L;}创建void CreateDlinklist(DLinkLIst &L){ int n,m; DLinkLIst s; DLinkLIst r=L; cout<<"please input a原创 2017-08-11 10:35:21 · 2367 阅读 · 1 评论 -
栈应用之括号匹配
代码示例:#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;int function(char *str){ int top=0; char stack[10000]; for(int i=0; str[i]!='\0'; i++) { switch(st原创 2017-08-18 11:16:17 · 198 阅读 · 0 评论 -
栈应用之任意进制转换
给定任意一个十进制的正整数n和正整数m (0 < m < =16) ,求n的m进制代码示例:#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;void function(int n,int m);void function(int n,int m){ int array[100]; in原创 2017-08-18 09:31:38 · 273 阅读 · 0 评论 -
单循环链表之带头结点
初始化void listInit(LinkList &L){ L=new node; L->next=L;} 头插法void CrateLink_H(LinkList &L){ LinkList p; int n,m; cout<<"please input a number:"; cin>>n; for(int i=0;i<n;i++原创 2017-08-09 10:05:19 · 1206 阅读 · 0 评论 -
双链表
说明**双链表就是在单链表结点上增添了一个指针域,指向当前结点的前驱。这样就可以方便的由其后继来找到其前驱,而实现输出终端结点到开始结点的数据序列。**初始化void InitList(LinkList &L){ L=new node; L->next=NULL; L->prior=NULL;}尾插法创建链表void CreateLinkE(LinkList &L){原创 2017-08-09 12:06:50 · 209 阅读 · 0 评论 -
带头结点的单链表总结
初始化void InitList(LinkList &L){ L=(LinkList)malloc(sizeof(struct Lnode)); L->next=NULL;}头插法1.void CreateListH(LinkList &L,int a[],int n){ LinkList s; int i; for (i = 0; i < n;原创 2017-08-08 23:59:54 · 692 阅读 · 0 评论 -
模拟哈希(开放地址法)
本题要求你模拟hash的保留余数法:取关键字被某个不大于哈希表表长m的数key除后所得余数为哈希地址。即 H(key) = key MOD m。现在有两种操作: 1. 往hash表插入一个值为x正整数。 2.查询hash表的每个地址表示的值。如果地址发生冲突,使用开放定址法: Hi = (H(key) + di) MOD m. 其中di原创 2016-12-12 16:00:21 · 342 阅读 · 0 评论 -
古老的火车问题
在地球的某个地方,有一个非常古老的火车站。这个车站只有一个如图所示的Y字型铁轨,并且火车只能经过A点驶入车站(设行驶方向为正),到达岔路口时反向经过B点驶出车站或者进入站台等待。一辆有n节车厢的火车驶入车站,火车的每一节车厢在经过A点的时候都会按照进入车站的先后顺序从1开始被编号。右图为5节车厢从A点进入站台时的情况(箭头表示火车的行驶方向)。设A点和B点与站台间的距离还有站台的容量足够大,并且每原创 2016-12-12 15:53:54 · 349 阅读 · 0 评论 -
二分法查找
题目:给你一个n个大小的递增的数组a[1],a[2]......a[n],要你从着n个数里找到大小为m的这个数,并输出它的下标,如果找不到这个数,则输出-1,查询进行q次。 Input第一行输入两个数字n(1,q(1第二行输入n个数字(依次递增的数字)接下来q行输入要求被查询的数字m(-1000000000原创 2016-11-15 21:41:34 · 247 阅读 · 0 评论 -
acm2 求两点之间的距离
#include #include int main(){ float x1,y1,x2,y2; while(scanf("%f %f %f %f",&x1,&y1,&x2,&y2)!=EOF) { printf("%.2f\n",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))); } return 0;}原创 2016-10-31 02:04:25 · 436 阅读 · 0 评论 -
约瑟夫问题解法
题目描述设有n个人围坐在圆桌周围,现从某个位置 i 上的人开始报数,数到 m 的人就站出来。下一个人,即原来的第m+1个位置上的人,又从1开始报数,再是数到m的人站出来。依次重复下去,直到全部的人都站出来,按出列的先后又可得到一个新的序列。由于该问题是由古罗马著名的史学家家Josephus提出的问题演变而来,所以通常称为Josephus 问题。编写程序选择循环队列作为存储结构模拟整原创 2016-11-03 17:48:55 · 559 阅读 · 0 评论