#include<iostream>
using namespace std;
typedef struct node
{
int data;
node* next;
};
class List
{
private:
node* head, * last;
public:
List()//初始化
{
head = new node;
head->next = NULL;
last = head;
}
void CreateList()//链表创建
{
cout << "节点数" << endl;
int n;
cin >> n;
cout << "输入结点序号" << endl;
for (int i = 0; i < n; ++i)
{
node* p = new node;
cin>>p->data;
//尾插法
last->next = p;
last = p;
}
last->next = NULL;
}
void OutCome()
{
cout << "链表数据如下" << endl;
for (node* p = head->next; p; p = p->next)
cout << p->data << '\t';
cout << endl;
}
void Insert()//直接插入法,升序排序
{
//从未好排序的区间找数插入,第二个起均未排好序
node* p = head->next->next;
node* q;//记录要排序点的下一个节点
for (; p; p = q)
{
q = p->next;
//从排好序的区间开始搜寻找插入
node* t = head->next;
for (;t != p; t = t->next)
if (t->data > p->data)
{
int temp = t->data;//临时变量实现数据交换
t->data = p->data;
p->data = temp;
}
}
cout << "排序好的结果为" << endl;
for (node* p = head->next; p; p = p->next)
cout << p->data << '\t';
cout << endl;
}
};
int main()
{
List l;
l.CreateList();
l.OutCome();
l.Insert();
}
单链表直接插入排序C++
最新推荐文章于 2022-10-18 12:56:18 发布