当前位置: 代码迷 >> 综合 >> (四)C++双向链表排序
  详细解决方案

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

热度:20   发布时间:2023-10-19 20:42:42.0

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

 

  相关解决方案