Lecture 0 --基本说明
Abstract:本章所记录的知识是后面章节需要的前导知识,请务必仔细读本章,理解涉及的知识点,方便后面章节的学习。本次数据结构笔记主要参考殷人昆的《数据结构(C语言描述)》这本书,需要的语言基于C,但是在C++的环境中进行编译,就是建立C++的项目在里面跑C语言的程序。
1.C语言指针
http://www.cnblogs.com/HurryXin/p/6547831.html
2.typedef
自己感觉主要功能时重命名形式,看一下几个例子:
(1)
typedef int DataType;
这里是将int重命名为DataType类型。可以这么理解,DataType a这里的a是int型的,与int a是等价的。
那为什么会使用typedef呢?
设想在一个程序中定义了a这个int型变量,写了一大堆代码,结果最后发现我要用float或者其他的数据类型,那就慢慢一个一个换吧,凡是相关的全部换掉。但是使用typedef就容易多了,只需要将typedef int DataType;的int转换成float即可。
(2)
typedef struct {
DataType a;
int n;
}SeqList;
定义的结构体名字叫SeqList,以后可以使用SeqList定义新的变量。
3.typedef与指针的特殊情况
这里主要解释两种用法,具体的代码先不体现以后会有的:
(1)
typedef struct node{
}LinkNode,*LinkList;
看到这种定义不知道是否很困惑,这里的typedef为什么后面跟着两个参数,这里简单理解为将struct node重命名为两个,但是两者又不一样。
LinkNode可以理解为一个数组其中的一个节点,而*LinkList则是该数组节点的地址,看着很难理解,画个图吧!

LinkNode与LinkList其实内容相同,但是又不完全相同。
(2)
LinkNode * Search(…);
这里被调函数为什么返回值是LinkNode*呢?主要是本函数是返回一个指针,所以使用LinkNode*。那用LinkList的时候该怎么办?这里仅需要把LinkNode*改成LinkList即可,注意不是LinkList*。但是建议使用LinkNode*,以后涉及的操作主要是删除等,所以最好返回节点而不是节点的地址。
4.C++部分知识介绍
(1)首先对比C语言与C++动态存储分配与释放命令
|
C语言 |
C++ |
|
|
动态分配 |
(DataType*)malloc(sizeof(DataType)); //简单变量 (DataType*)malloc(sizeof(DataType)*Size); //数组 |
new DataType; //简单变量 new DataType[Size]; //数组 |
|
动态释放 |
free(p); |
delete p; //简单变量 delete [] p; //数组 |
(2)报错函数
#include <stdlib.h>
#include <iostream.h>
void Error(char *message){
5 cerr<<”Error:”<<message<<endl;
);
}
(3)C++引用
这里的引用仅需要理解为重命名,但是只要发生在被调函数中,举个栗子:
void initList(SeqList &L){
};
这里的&L可以理解为重命名,其中把传入的参数不管是什么如何用L统一表示。注意C中是没有这种用法的,所以说基于C语言但是用C++的环境跑代码。
5.时间复杂度度量
void example(float x[][m],int m){
float sum[m];
int i;
int j;
;i<m;i++){
sum[i]=0.0;
;j<m;j++)
sum[i]=sum[i]+x[i][j];
}
;i<m;i++)
count<<"Line"<<i<<":"<<sum[i]<<endl;
}

这里可以看出,float sum[m]; int i; int j;与其他操作不同,该表自己详细研究一下,可以得出结论。
一般情况用大O表示时间复杂度。
基本做法就是T(n)<=O(f(n))也可以根据循环大体推算出最后结果。
void example(float a[],int& n){
int i;
int j;
;
;i<n;i++)
;j<n;j++)
if(a[i]==a[j])
a[j]=delTag;
;i<n;i++)
if(a[i]!=delTag){
if(i!=k)
a[k]=a[i];
k++;
}
}
这里的O(n2)当出现两个的O(n)时取最大值T(n)=O(max{f(n),g(n)})=O(n2)
算法时间复杂度排序:
c<log2n<n<nlog2n<n2<n3<2n<3n<n!
其中c,log2n,n,nlog2n都不错,n2,n3还可接受,2n,3n,n!就不能算是好的算法了。
转载请注明出处,O(∩_∩)O谢谢!
Lecture 0 --基本说明的更多相关文章
- [C2P3] Andrew Ng - Machine Learning
##Advice for Applying Machine Learning Applying machine learning in practice is not always straightf ...
- ZAM 3D 制作简单的3D字幕 流程(二)
原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...
- ZAM 3D 制作3D动画字幕 用于Xaml导出
原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...
- 微信小程序省市区选择器对接数据库
前言,小程序本身是带有地区选着器的(网站:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html),由于自己开发的程序的数据是很 ...
- osg编译日志
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...
- one recursive approach for 3, hdu 1016 (with an improved version) , permutations, N-Queens puzzle 分类: hdoj 2015-07-19 16:49 86人阅读 评论(0) 收藏
one recursive approach to solve hdu 1016, list all permutations, solve N-Queens puzzle. reference: t ...
- hdu 1159, LCS, dynamic programming, recursive backtrack vs iterative backtrack vs incremental, C++ 分类: hdoj 2015-07-10 04:14 112人阅读 评论(0) 收藏
thanks prof. Abhiram Ranade for his vedio on Longest Common Subsequence 's back track search view in ...
- note of introduction of Algorithms(Lecture 3 - Part1)
Lecture 3(part 1) Divide and conquer 1. the general paradim of algrithm as bellow: 1. divide the pro ...
- MIT 6.828 JOS学习笔记0. 写在前面的话
0. 简介 操作系统是计算机科学中十分重要的一门基础学科,是一名计算机专业毕业生必须要具备的基础知识.但是在学习这门课时,如果仅仅把目光停留在课本上一些关于操作系统概念上的叙述,并不能对操作系统有着深 ...
随机推荐
- Odoo电子数据交换(EDI)
Odoo EDI功能能在odoo实例之间交换数据,可以交换哪些数据呢? 默认支持: account.invoice 发票,含发票行 res.currency res.partner purchase. ...
- 关于finfo_file函数获取文件mime值验证出错的问题
今天在做图片上传 验证图片mime值时 突然发现 个别特殊情况下finfo_file 获取的MIME值不能直接使用, 依照官方的写法是 $finfo=finfo_open(FILEINFO_MIME ...
- Jenkins Robot framework 持续集成环境搭建
为什么我们要引入RF?其实最初我们引入RF是为了能够快速的开展自动化验收测试,为敏捷保驾护航.这其中有个重要的工具Jenkins,同时也是应群里朋友们的要求,这次就来介绍一下RF如何快速便捷的结合Je ...
- 系统安全-LDAP
LDAP服务器 1.目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好像Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不同,它有优异的读性能 ...
- Active Directory组织单位(Organizational Unit)操作汇总
前言 本章聊Active Directory的组织单位(OU)的新增.修改.移动等操作,使用.NET Framework 为我们提供的System.DirectoryServices程序集. 不积跬步 ...
- 项目部署到niginx title乱码问题
今天部署我react移动端项目到我的linux服务器的时候出现乱码问题 原来是我再配置niginxserver的时候没有指定charset,设置为utf-8,重启nginx服务器,大功告成
- LeetCode求能够装得最多的水
费了半天劲还是没想出来,然后跑到网上找答案,明白了是怎么回事儿了,就是不知道为啥自己没有想出来. 明天再搞~~~ 国庆快乐~~~ 一年了~~~~~ 明年今日~~我会在哪儿 =====2017.9.30 ...
- VC ++6.0英文版常用菜单使用参考【转载整理】
(1)File菜单 New:打开“new”对话框,以便创建新的文件.工程或工作区. Close Workspace:关闭与工作区相关的所有窗口. Exit:退出VC6环境,将提示保存窗口内容等. (2 ...
- MVC入门——详细页
添加Action ShowDetail using System; using System.Collections.Generic; using System.Linq; using System. ...
- 【BZOJ4476】[Jsoi2015]送礼物 分数规划+RMQ
[BZOJ4476][Jsoi2015]送礼物 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物.萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都排成 ...