2015年12月5日

所以呢,这貌似是第一篇博客。

@echo off
echo My First Blog .
pause
exit

哈哈,好吧。只是前几天大概12月1日左右接触了一下批处理DOS之类的吧,然后觉得蛮好玩的就开始学习了。
然后呢,在刚好想深度学习的时候…ACM来了,本来不怎么想接触会编程设计的了,至少会缓一段时间(让屈微老师失望了…)但是后来还是想想看,还是做一下吧,于是在预赛那天(11月29日)去参加了一个预赛,结果很神奇的把a题给AC了,然后d就…晚交了5分钟吧。然后很意外地参加到了决赛(好吧= = 其实后来说只要A了a or d的都可以进决赛…心灰意冷)
呸呸呸,废话真多= =。
于是来正题吧,今天参加ACM-ICPC的校内决赛了,虽然…嗯…好吧,带了一堆其实没什么用的书,看都没看几眼,页就翻了翻字典然后把规则当作草稿纸演算了… 其他都没怎么用到…真是教训啊… 然后只A了一道签到题… 剩下9题没出来,还有4题都超时了,TIME LIMIT。好吧,我没学过数据结构什么的跟人家比,真是有点螳臂当车的感觉…
于是乎,心塞塞… 不想这样就输了。
好了,不提ICPC那边了…
说说前几天看的关于数据结构(C语言)的内容吧,批处理那边就先不管了。

ADT Triplet{
数据对象:D={e1,e2,e3|e1,e2,e3∈ElemSet(某种关系运算的集合)
数据关系:R1={<e1,e2>,<e2,e3>}
基本操作:
InitTriplet(&T,v1,v2,v3)
操作结果:初始化Triplet
DestroyTriplet(&T)
初始条件:Triplet存在
操作结果:Triplet被摧毁
...
Max(T,&e)
初始条件:Triplet存在
操作结果:将T三元组的最大值以输出到e
Min(T,&e)
初始条件:Triplet存在
操作结果:将T三元组的最小值以输出到e

好吧,就是这样一个神奇的东西。
总之就学了如何定义一个抽象数据类型,在C++里面应该称之为模板类吧?总之分为:数据对象D,数据关系S,还有基本操作P。
建成(D,S,P)。
然后balabala 讲了Triplet是如何被定义的,例如其中一个函数。
我来试试看,能不能把它写出来来哈。

Status Max(Triplet T,ElemType&e)
{
return T[0]>T[1]?(T[0]>T[2]?T[0]:T[2]):(T[1]>T[2]?T[1]:T[2]);
}

好吧,写错了… 完全是记忆来的。
说好的是返回值给e的 最后变成了什么~ Status的值也不对。
下面才是正确的:

Status Max(Triplet T,ElemType&e)
{
e = T[0]>T[1]?(T[0]>T[2]?T[0]:T[2]):(T[1]>T[2]?T[1]:T[2]);
return OK;
}

好吧,这貌似是这本书自己定义的一个神奇的规则吧?
Status是函数类型。返回值如下

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
//函数结果状态代码
typedef int Status

所以说… 这就是第一章节所学的内容吧,之后大概还会学C++的STL标准模版库,那也是个大内容呢。
对了,第一章还介绍了表、树、图什么的,嘛… 不管了,还差太远了。
对了,第一章最后还介绍了(渐进)时间复杂度T(n)和空间复杂度S(n)。
公式分别与算法执行时间的增长率和f(n)的增长率相同。(ACM-ICPC可能会用到?)
T(n)=O(f(n))||S(n)=O(f(n))
然后上星期还进入了第二章:线性表。
这个就是一张表吧,一对一的数据结构,和后面的树(一对多)、图(多对多)还是有一定差别的。
于是乎,我就先列个表吧,然后结束了今天的日志更新(其实我还学了List的合并和排序、合并排序递减、合并排序递减非递减,这些都下次更新的时候一起更新吧!)

ADT List{
数据对象:D={ai|ai∈ElemSet}
数据关系:R={<ai,ai+1>|ai,ai+1∈D,i=1,2,3,4,5...n}
基础操作:
InitList(&L)
操作结果:构造一个新的List
DestroyList(&L)
操作结果:删除一个已存在的List
ClearList(&L)
初始条件:线性表List已存在
操作结果:情况List
ListEmpty(L)
初始条件:线性表List已存在
操作结果:判断List是否为空Empty,若为Empty返回True,否则返回False
ListLength(L)
初始条件:线性表List已存在
操作结果:return List的长度Length
GetElem(L,i,&e)
初始条件:线性表List已存在,i∈(1,ListLength(L))
操作结果:用e返回第i个值(下标i-1)数据元素
LocateElem(L,e,compare())
初始条件:线性表List已存在,切compare()为数据元素判断函数
操作结果:返回List中第一个与e满足关系compare()的数据元素的为序,若不存这样的数据元素在返回False
PriorElem(L,cur_e,&pre_e)
初始条件:线性表List已存在
操作结果:若cur_e是L的数据元素之一,且不是第一个,则用pre_e返回它的前驱,否则返回False,pre_e没有任何定义。
NextElem(L,cur_e,&next_e)
初始条件:线性表List已存在
操作结果:若cur_e是L的数据元素之一,且不是最后一个,则用pre_e返回它的后驱,否则返回False,pre_e没有任何定义。
ListInsert(&L,i,e)
初始条件:线性表List已存在,i∈(1,ListLength(L))
操作结果:在List中第i个位置(位序i-1)插入ElemType e,并且使ListLength增加1。
ListDelete(&L,i,&e)
初始条件:线性表List已存在,i∈(1,ListLength(L))
操作结果:删除List中第i个位置的数据元素(位序i-1),别切实ListLength减少1,并且用e返回。
ListTraverse(L,visit())
初始条件:线性表List已存在,visit()适用于List中所有的元素
操作结果:对List中每个数据元素调用visit()函数,一旦visit()失败,则操作失败,返回False,否则返回True。
}ADT List

哎了个妈呀.. 终于给我打完了…
本来还想说点啥的..
废话不多说,睡觉。
剩下的下次更新日志的时候再更吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值