(四)C++双向链表排序

                                       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;
}

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值