模板类 template <class T> sort
2014-09-30 15:38
239 查看
模板类 template <class T>
队列从中间开始(5)插入若干元素,并对其进行升序排列
队列为循环队列,队列长度为10
队列从中间开始(5)插入若干元素,并对其进行升序排列
队列为循环队列,队列长度为10
/******************************************** 模板类 template <class T> 队列从中间开始(5)插入若干元素,并对其进行升序排列 队列为循环队列,队列长度为10 ********************************************/ #include <iostream> using namespace std; template <class T> class xqueue{ public: xqueue(); void enqueue(T item); void sort(T *num, int len); void print()const; T *getdata(){ return data; } private: T data[10]; int head; int tail; }; template <class T> //xqueue<T>::xqueue():head(5),tail(5){} xqueue<T>::xqueue() { head = 5; tail = 5; } template <class T> void xqueue<T>::enqueue(T item){ data[tail] = item; tail = (tail +1)%10; } template <class T> void xqueue<T>::print()const{ for(int i = head; i != tail; i=(i+1)%10){ data[i].print(); } } class RN{ public: RN(int _x, int _y); bool operator >(RN rn)const; void print()const; private: int x; int y; }; RN::RN(int _x = 1, int _y = 1):x(_x),y(_y){} bool RN::operator>(RN rn)const{ return x/(double)y > rn.x/(double)rn.y; } void RN::print()const{ cout << x << "/" << y << endl; } class xpoint{ public: xpoint(int _x, int _y); bool operator >(xpoint xp)const; void print()const; private: int x, y; }; xpoint::xpoint(int _x = 0, int _y = 0):x(_x),y(_y){} bool xpoint::operator >(xpoint xp)const{ // return (x^2 + y^2) > (xp.x^2 + xp.y^2); //错误 return (x^2) + (y^2) > (xp.x^2) + (xp.y^2);//ok // return (x*x + y*y) > (xp.x*xp.x + xp.y*xp.y); //ok } void xpoint::print()const{ cout << "(" << x << "," << y << ")" << endl; } template <class T> void print_array(T *buf, int len) { T tmp; for(int i = 0; i < len; i++){ buf[i].print(); } } template <class T> void xqueue<T>::sort(T *num, int len) { int i, j; T tmp; for(i = 0; i < len; i++){ // for(j = 0; j < len - i - 1; j++){ for(j = head; j != (tail - 1) ; j = (j+1)%10){ //是 j != (tail - 1) if(num[j] > num[(j + 1)%10]){ //注意是num[j] and num[j + 1] tmp = num[(j + 1)%10]; num[(j + 1)%10] = num[j]; num[j] = tmp; } } } } #if 0 template <class T> void sort(T *a, size_t len){ T t; for(int i=0;i<len-1;i++) /* 冒泡法排序 */ for(int j=0;j<len-i-1;j++) if(a[j]>a[j+1]) { t=a[j];/* 交换a[i]和a[j] */ a[j]=a[j+1]; a[j+1]=t; } } #endif int main(){ xqueue<RN> q1; q1.enqueue(RN(1,2)); q1.enqueue(RN(4,2)); q1.enqueue(RN(4,2)); q1.enqueue(RN(1,2)); q1.enqueue(RN(8,3)); q1.enqueue(RN(8,3)); q1.sort(q1.getdata(),6); q1.print(); cout << "----------------------" << endl; xqueue<xpoint> q2; q2.enqueue(xpoint(2,2)); q2.enqueue(xpoint(5,3)); q2.enqueue(xpoint(6,6)); q2.enqueue(xpoint(1,6)); q2.enqueue(xpoint(4,2)); q2.enqueue(xpoint(4,2)); q2.sort(q2.getdata(),6); q2.print(); } /*$ ./a.out 1/2 1/2 4/2 4/2 8/3 8/3 ---------------------- (2,2) (4,2) (4,2) (1,6) (5,3) (6,6) */
相关文章推荐
- [问题与解决] java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
- 泛型Class<T>和 T
- <b>Fatal error</b>: Class 'SoapClient' not found in <b>
- osworkflow学习笔记-标签<initial-actions>、<restrict-to>、beanshell、class
- Class<T>在BaseDao<T>作用
- <jsp:plugin>不出现ClassNotFoundException异常详细步骤
- ibatis 返回list<String[]>----resultClass="hashMap" 可以实现
- public void Delete<T>(List<T> EntityList) where T : class, new()
- 启动tomcat后Myeclipse调试Class<T>.getDeclaredConstructors0 的原因
- JNI中用 javah.exe 产生头JNI-Style文件出现错误:无法访问 <class> 未找到 <class> 的类文件
- Class<Object>与Class<?>有何区别呢
- How to sort a generic List<T>
- org.objectweb.asm.ClassWriter.<init>(I)V和org.objectweb.asm.ClassWriter.<init>(Z)V
- hibernate org.hibernate.validator.util.Version <clinit> Could not initialize class错误
- C# List<T>.Sort排序
- 按钮图片<input type="image" class="peidui_Bt1" src="img/pedui_bt.png" />
- List<>中Sort()、Find()、FindAll()、Exist()的使用方法
- <div class="clear"></div>
- template <class T> T * funcNew(T x,int n)
- android Collections.sort(List<T> list) 与JAVA Collections.sort(List<T> list)