笔者说到做到,考完数据结构就来更新了。首先笔者还是吐槽下昨天的考试吧,有道题我之前是发在博客上面的,对,就是那个dfs。昨天我抽到那道题了,但是最后没有AC,然后报错提示是memory limit exceeded,也就是超内存了,当时我就没反应过来是为什么。晚上回去看源码,哎呀我的妈,我居然忘了标记,就爆栈了!!!只用标记一下就就可以AC了!!!哎呀我怎么那么蠢啊!!而且那道题 是我给其他同学讲过的!!!
好啦,言归正传,开始今天第一题。
输入
第一行:双向表的长度; 第二行:链表中的数据元素。
输出
输出双向链表中的数据元素的值。
样例输入
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说那么多,就是一句话,数组模拟和数据结构同等重要,嗯。