代码改变世界

随笔档案-2013年04月

数据结构学习的简单问题(四):用队列自己实现String类

2013-04-12 21:35 by liuzq2013, 167 阅读, 收藏,
摘要: 用队列自己实现String类,要求实现赋值,字符串拼接,求子串,字符串模式匹配,判断两字符串是否相等等功能。对队列的拷贝构造函数理解不够深,一开始犯了大错!头文件如下:struct StringNode{ char data; StringNode *link; StringNode(char d,StringNode* L=NULL){ data=d;link=L;}};class String{ private: StringNode *front,*rear; public: String(){front=NULL;... 阅读全文

数据结构学习的简单问题(三):用链表实现多项式相加

2013-04-11 01:51 by liuzq2013, 341 阅读, 收藏,
摘要: 头文件:polynomial.h#include <iostream>using namespace std;struct Term {//多项式结点定义 float coef;//系数 int exp;//指数 Term *link;//链接指针 Term (float c, int e, Term *next = NULL) { coef = c; exp = e; link = next; }//构造函数 Term *InsertAfter ( float c, int e);//插入调用项之后 frie... 阅读全文

数据结构学习中的简单问题(二):用循环链表求解简单约瑟夫问题

2013-04-11 00:52 by liuzq2013, 351 阅读, 收藏,
摘要: 头文件:CircList.htemplate <class T>struct CircLinkNode { //循环链表结点类定义!! T data; CircLinkNode<T> *link; CircLinkNode ( CircLinkNode<T> *next = NULL ) { link = next; } //构造函数不带数据 CircLinkNode ( T d, CircLinkNode<T> *next = NULL ) { data = d; link = next; } //带数据 bool operato... 阅读全文

数据结构学习中的简单问题(一):用链表方式实现的队列输出杨辉三角

2013-04-11 00:42 by liuzq2013, 427 阅读, 收藏,
摘要: 之前没怎么花时间,面临数据结构考试了,看了一天的数据结构,把链表,栈,队列都看了一遍,写点示例程序加深一下印象。template <class T>struct QueueNode { T data; QueueNode<T> *link; QueueNode(T d = 0, QueueNode<T> *next = NULL) : data(d), link(next) { }};template <class T>class LinkedQueue { private: QueueNode<T> *front, *rear;// 阅读全文

C++学习的简单问题(五)

2013-04-09 00:37 by liuzq2013, 281 阅读, 收藏,
摘要: 问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。输入格式 输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位。样例输入1 1 3 3 2 2 4 4样例输出1.00#include <iostream>#include <iomanip>using namespace std;double area(double x1,double y1,d 阅读全文

C++学习的简单问题(四)

2013-04-09 00:32 by liuzq2013, 436 阅读, 收藏,
摘要: 问题描述突然有一天,你忘记了今天是星期几,中国人凑吉利,所以你找来了八个人,让他们每人说两句话,第一句为今天星期几,另一句为今天不是星期几,并且两句中一句真,一句假。可能第一句是真,也可能第二句是真。最后请你确定今天是星期几,并输出。输入格式8行,每行是两个星期几的英文单词,用空格分开,星期几的英文不考虑大小写,即可能是大小写夹杂的单词形式(并非只有首字母大写)。输出格式一行英文,表示今天星期几,要求是规范的英文单词,即首字母要大写,之后小写。#include <iostream>#include <string>using namespace std;string t 阅读全文

三次函数求根-牛顿迭代法

2013-04-09 00:27 by liuzq2013, 1301 阅读, 收藏,
摘要: 问题描述给定三次函数f(x)=ax3+bx2+cx+d的4个系数a,b,c,d,以及一个数z,请用牛顿迭代法求出函数f(x)=0在z附近的根,并给出迭代所需要次数。 牛顿迭代法的原理如下(参考下图):设xk是方程f(x)=0的精确解x*附近的一个猜测解,过点Pk(xk,f(xk))作f(x)的切线。该切线与x轴的交点比xk更接近方程的精确解程x*。 迭代公式为:xk+1= xk - f(xk)/f '(xk),当f(x)的绝对值足够小的时候即可结束迭代。注意:对于本题给定函数f(x),f '(x)=3ax2+2bx+c,且当|f(x)| ≤10-7时,即可认为x是f(x)=0的 阅读全文

C++学习的简单问题(三)

2013-04-09 00:23 by liuzq2013, 253 阅读, 收藏,
摘要: 问题描述 给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。输入格式 第一行为一个整数n,表示集合A中的元素个数。 第二行有n个互不相同的用空格隔开的整数,表示集合A中的元素。 第三行为一个整数m,表示集合B中的元素个数。 第四行有m个互不相同的用空格隔开的整数,表示集合B中的元素。 集合中的所有元素均为int范围内的整数,n、m<=1000。输出格式 第一行按从小到大的顺序输出A、B交集中的所有元素。 第二行按从小到大的顺序输出A、B并集中的所有元素。 第三行按从小到大的顺序输出B在A中的余集中的所有元素。#include <iostream>us... 阅读全文

C++学习的简单问题(二)

2013-04-09 00:19 by liuzq2013, 431 阅读, 收藏,
摘要: 实现一个表示分数的Fraction类。在该类中有两个数据成员分别用于存储分数的分子和分母。函数成员中包含一个设置分子和分母的函数assign(),转换成double 类型数值的函数convert(),交换分子和分母的函数invert()以及一个输出分数的函数print(),请注意输出结果格式:若分子分母同时为0,则输出字符串“#NAN”;若只有分母为0,则输出字符串“#INF”;其余情况输出最简分式,即最大公因子已被约去后的形式;当分子为0,分母为负数时,注意结果应输出0,而非“-0”。 第一步:首先通过枚举类型Flag来定义表示分值求值结果的状态,NORMAL表示两个非零数相除,NAN表.. 阅读全文

八皇后问题

2013-04-08 20:23 by liuzq2013, 145 阅读, 收藏,
摘要: 睡眠不足,思路很不清晰,所以写得比较凌乱,以后再改。#include <iostream>#include <stdlib.h>using namespace std;int abs(int a){ if(a<0) a=-a; return a;}bool isSafe(int i1,int j1,int i2,int j2){ if(j1==j2||abs(j2-j1)==abs(i2-i1)) return false; return true;}void queen(){ int p[8],count=0; int i=1;//for f... 阅读全文

C++学习的简单问题(一)

2013-04-08 20:18 by liuzq2013, 422 阅读, 收藏,
摘要: 实现客户机(CLIENT)类。声明字符型静态数据成员ServerName,保存其服务器名称,整型静态数据成员ClientNum,记录已定义的客户数量,定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现,在文件test.cpp中测试这个类。//client.h#ifndef _CLIENT_#define _CLIENT_#include <iostream>#include <string.h>using namespace std;class CLIENT{static char* Ser 阅读全文

Joseph Problem及其变形

2013-04-08 20:10 by liuzq2013, 234 阅读, 收藏,
摘要: 一道数据结构的习题,貌似建议用循环链表来求解,只是我最近比较懒,所以直接采用用起来比较舒服的循环语句来求解了。Joseph ProblemDescriptionThe Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle every mth is going to be executed and only the lif 阅读全文