用c++实现自动排序的单向链表

本文介绍了一个数据结构作业,要求使用C++实现一个自动排序的单向链表,链表始终保持升序。虽然该结构类似于优先队列,但链表的排序代价相对较高,需要遍历至合适位置插入新节点。代码实现中需考虑特殊情况,如链表为空、新数据小于头节点等。
摘要由CSDN通过智能技术生成
这是一个数据结构作业:
用c++编写如下数据结构:在单向链表的基础上,加入一个自动排序的功能,要求任何时候链表都是升序的。要实现基本的插入和输出功能。

分析:这个链表在功能上类似优先队列 priority_queue
相同点:都是非线性结构,都是不限制数据量的容器,每次插入数据后都能保持数据顺序。
不同点:优先队列采用二叉堆结构,实现自动排序的代价很低,而链表则要每次向后遍历,直至找到合适的位置再插入新节点。
当数据多时,每次插入数据都要付出极大代价。

我的代码如下:
需要注意写算法时要留意特殊情况。例如:
1.当链表为空时,数据直接放到头节点。
2.当插入数据比头节点小时,这个数据要取代头节点。
3…

#include<iostream>
#include<stdio.h>
#include<algorithm>

using namespace std;
#define bigint 1e9

struct node{
   
	int data;
	node* next;
	node(int data){
   
		this->data = data;
		this->next = NULL;
	}
};

//约定1:链表的数据范围只能在 0 ~ 10^9,否则放弃这个数据。
//约定2:链表的数据又小到大排序

class list{
   
private:
	node* head;
	int maxn;
	int minn;
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值