用模板写选择排序-链表
来源:互联网 发布:macbookpro必装软件 编辑:程序博客网 时间:2024/04/30 09:29
今天,我们一起用模板来写一个选择排序,熟练对模板的使用,具体如例1所示。
例1 选择排序-链表
ListSelectSort.hpp内容:
#ifndef _LIST_SELECT_SORT_H_#define _LIST_SELECT_SORT_H_template<typename T>struct Node{T m_Data;Node * m_pNext;};template<typename T>bool SelectSort(Node<T> * & pHead){Node<T> * pCurNode = NULL;Node<T> * pTemp = NULL;T tTemp;Node<T> * pMin = NULL;if (!pHead)return false;pCurNode = pHead;while (pCurNode){pTemp = pCurNode->m_pNext;pMin = pCurNode;while (pTemp){if (pTemp->m_Data < pMin->m_Data){pMin = pTemp;}pTemp = pTemp->m_pNext;}if (pMin != pCurNode){tTemp = pCurNode->m_Data;pCurNode->m_Data = pMin->m_Data;pMin->m_Data = tTemp;}pCurNode = pCurNode->m_pNext;}return true;}#endifmain.cpp内容:
#define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #include "ListSelectSort.hpp"#include <time.h>#include <iostream>using namespace std;void main(){int i = 0;Node<int> * pInt = NULL;Node<int> * pNewNode = NULL;Node<int> * pCurNode = NULL;srand(time(NULL));for (i = 0; i < 10; i++){pNewNode = new Node<int>;if (pNewNode == NULL){while (pInt){pCurNode = pInt;pInt = pInt->m_pNext;delete pCurNode;}pInt = NULL;return;}pNewNode->m_Data = rand() % 100;pNewNode->m_pNext = pInt;pInt = pNewNode;}cout << "排序前:" << endl;pCurNode = pInt;while (pCurNode){cout << pCurNode->m_Data << '\t';pCurNode = pCurNode->m_pNext;}cout << endl;if (SelectSort<int>(pInt) == false){cout << "排序失败." << endl;}else{cout << "排序成功." << endl;}cout << "排序后:" << endl;pCurNode = pInt;while (pCurNode){cout << pCurNode->m_Data << '\t';pCurNode = pCurNode->m_pNext;}cout << endl;while (pInt){pCurNode = pInt;pInt = pInt->m_pNext;delete pCurNode;}pInt = NULL;_CrtDumpMemoryLeaks();system("pause");return;}运行效果如图1所示:
图1 运行效果
今天,我们一起实践了选择排序,希望能加深大家对模板的体会。
0 0
- 用模板写选择排序-链表
- 用模板写选择排序-数组
- 用模板写插入排序-链表
- 用模板写冒泡排序-链表
- 用模板写快速排序-链表
- 【排序】选择排序模板
- C++选择排序模板
- c++模板选择排序
- C++选择排序模板
- java写选择排序
- 排序模板 选择法排序
- 用模板写插入排序-数组
- 用模板写冒泡排序-数组
- 用模板写快速排序-数组
- 【动手写排序】选择排序
- 我写的选择排序
- 我写的选择排序
- 利用c++模板实现选择排序
- GreenDao 学习笔记 1
- uva 10651 Pebble Solitaire(动态规划:记忆化搜索)
- Java编程思想(七) —— 内部类
- ACdream 1108 分块
- android编程异常解决 FATAL EXCEPTION: main android.view.InflateException: Binary XML file line #195: Erro
- 用模板写选择排序-链表
- 求二叉树中节点的最大距离
- UVA - 10601 Cubes (组合+置换)
- String to Integer (atoi)
- ZOJ Problem Set - 2750
- Android开源项目QuickReturnHeader分析
- Reverse Words in a String
- ssh 搭建
- HDU4592 Boring Game (2013 ACM-ICPC南京赛区全国邀请赛) 高斯消元