双向链表的操作问题

笔者说到做到,考完数据结构就来更新了。首先笔者还是吐槽下昨天的考试吧,有道题我之前是发在博客上面的,对,就是那个dfs。昨天我抽到那道题了,但是最后没有AC,然后报错提示是memory limit exceeded,也就是超内存了,当时我就没反应过来是为什么。晚上回去看源码,哎呀我的妈,我居然忘了标记,就爆栈了!!!只用标记一下就就可以AC了!!!哎呀我怎么那么蠢啊!!而且那道题 是我给其他同学讲过的!!!

好啦,言归正传,开始今天第一题。

描述
建立一个长度为n的带头结点的双向链表,使得该链表中的数据元素递增有序排列。(必须使用双向链表完成,数据类型为整型。)

输入

第一行:双向表的长度; 
第二行:链表中的数据元素。

输出

输出双向链表中的数据元素的值。

样例输入

10
2 4 6 3 5 8 10 21 12 9

样例输出

2 3 4 5 6 8 9 10 12 21

解析

这个一看,我觉得哈,就是一个快排可以搞定的事情,那就这样吧,我觉得这是最容易就可以想到的方法。

现在上代码

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int a[200],n,i;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>a[i];
	}
	sort(a,a+n);
	for(i=0;i<n;i++)
	{
		cout<<a[i]<<' ';
	}
	return 0;
}

主要这学期笔者开始学C++了,所以代码也开始用C++写了,感觉还不错,不过有些时候在不知道怎么用C++操作的时候会回归C

这道题笔者用的是快排函数,笔者之前专门写过一篇介绍快排的博客,大家有兴趣可以去戳一下https://blog.csdn.net/xiaozhu_gao/article/details/79058740

就这样啦~~

BTW,笔者还要说一句,笔者用数组模拟的初衷只是要表明,我们现在所学的数据结构都是建立在数组(结构体算是一种变态的数组吧)上的,殊途同归而已。笔者不是在教大家偷懒,而是大家在用传统方法做的时候也可以适当想其他适用的办法。要拓宽自己的思路(我相信大家在用传统方法做链表,顺序表这些的时候也会有“明明用数组模拟会更简单”的想法)不要为了OJ而OJ。数据结构也是作为计算机专业来说十分重要的一门课,大家务必要学好,不能因为可以用数组模拟而忽视或者不重视传统方法。emmm说那么多,就是一句话,数组模拟和数据结构同等重要,嗯。


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页