概述
C++双向链表排序
建立一个长度为n的带头结点的双向链表,使得该链表中的数据元素递增有序排列。(必须使用双向链表完成,数据类型为整型。)
输入
第一行:双向表的长度; 第二行:链表中的数据元素。
输出
输出双向链表中的数据元素的值。
样例输入
10 2 4 6 3 5 8 10 21 12 9
样例输出
2 3 4 5 6 8 9 10 12 21
// 10双向链表的操作问题.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef int ElemType;
class List {
public:
List();
List(int data);
void Create_List(int len);
void Sort();
void Output();
~List();
private:
ElemType Data;
List *Prior;
List *Next;
};
List::List() {
this->Prior = NULL;
this->Next = NULL;
}
List::List(int data) {
this->Data = data;
}
void List::Create_List(int len) {
List *L,*Node;
int data;
int i=0;
L = this;
this->Data = len;
while (i<len)
{
cin >> data;
Node = new List(data);
L->Next = Node;
Node->Prior = L;
L = Node;
i++;
}
L->Next = NULL;
}
void List::Sort() {
List *Node;
int Temp;
int i, j;
for (i = 0; i < this->Data;i++) {
Node = this->Next;
for (j = 0; j < this->Data - i - 1;j++) {
if (Node->Data > Node->Next->Data) {
Temp = Node->Data;
Node->Data = Node->Next->Data;
Node->Next->Data = Temp;
}
Node = Node->Next;
}
}
}
void List::Output() {
List *L = this->Next;
while (L) {
cout << L->Data << " ";
L = L->Next;
}
}
List::~List() {
if (this->Next) {
delete this->Next;
}
}
int main()
{
int Len;
List *Head = new List;
cin >> Len;
Head->Create_List(Len);
Head->Sort();
Head->Output();
delete Head;//养成好习惯
return 0;
}
最后
以上就是激动毛豆为你收集整理的(四)C++双向链表排序 C++双向链表排序的全部内容,希望文章能够帮你解决(四)C++双向链表排序 C++双向链表排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复