1321 扎实的基础:即编程语言、数据结构和算法

编程语言:

Q:如果写的函数需要传入一个指针,则是否需要为该指针加上const?把const加在指针不同的位置是否有区别?

A:const是用来声明一个常量的,如果不想让一个值改变就应该加上const。首先来看如下的一段代码:

    int a = 100;
    const int *b = &a;        // 1
    int const *b = &a;        // 2
    int  *const b = &a;        // 3
    const int *const b = &a;        // 4

  区分常量指针和指针常量的一个方法是,看const是在星号的左边还是右边。如果是1与2的形式则是常量指针(指针指向的内容为常量),因为const与放在变量声明符的位置无关,故1与2等价,这种形式 *b 不能变,但 b 能变,即指针指向的内容不能变,但指针的指向能变。如果是3的形式则是指针常量(指针本来就是常量),这种形式*b能变,但b不能变,即指针指向的内容能变,但指针的指向不能变。

Q:如果写的函数需要传入的参数是复杂类型的实例,则传值和传引用有什么区别?什么时候应该为传引用加上const?
A:分为三种情况。

1. 用const修饰函数传入的参数

  对于非内部数据类型,比如一个复杂类的实例,应该是将传值改为传引用,目的是减少拷贝(例如调用拷贝构造函数),提高效率。但是对于内部数据类型,例如int,不能将传值改为传引用,否则不但不能提高效率,反而降低代码的可读性。

2. 用const修饰函数的返回值

  如果以指针类型的方式作为函数的返回值,加上了const,则代表函数返回值(指针)的内容不能被修改,且只能被赋值给加const修饰的同类型指针。当然,用const_cast可以去电const属性。如果以值类型的方式作为函数的返回值,由于返回值会拷贝到临时变量中,故加上了const没什么用。如果以引用类型的方式作为函数的返回值,加上const这种情况并不多,但是在类的赋值号重载时就必须加上const,目的是为了链式表达。

3.用const修饰成员函数

  为了提高代码的健壮性,任何不会修改数据成员的成员函数都应该被修饰为const,且注意const要加在参数列表后面。

数据结构:
1.熟练掌握链表、树、栈、队列和哈希表等数据结构及其相关操作?
答:
2.链表的插入和删除节点如何写?
答:
3.树的6中遍历怎么写?
答:

算法:
1.了解各种查找和排序算法的原理及时间空间复杂度等?
答:
2.重点掌握二分查找,二叉排序树查找?
答:
3.重点掌握插入排序、冒泡排序、归并排序、快速排序?
答:
4.了解动态规划和贪婪算法等原理?
答:

原文地址:https://www.cnblogs.com/parzulpan/p/11247375.html

时间: 2024-10-13 08:13:11

1321 扎实的基础:即编程语言、数据结构和算法的相关文章

python基础下的数据结构与算法之顺序表

一.什么是顺序表: 线性表的两种基本的实现模型: 1.将表中元素顺序地存放在一大块连续的存储区里,这样实现的表称为顺序表(或连续表).在这种实现中,元素间的顺序关系由它们的存储顺序自然表示. 2.将表中元素存放在通过链接构造起来的一系列存储模块里,这样实现的表称为链接表,简称链表. 二.顺序表两种基本形式: 三.顺序表结构: 四.实现方式: 五.增加元素: a. 尾端加入元素,时间复杂度为O(1) b. 非保序的加入元素(不常见),时间复杂度为O(1) c. 保序的元素加入,时间复杂度为O(n)

《数据结构与算法之美》 <03>数组:为什么很多编程语言中数组都从0开始编号?

提到数组,我想你肯定不陌生,甚至还会自信地说,它很简单啊. 是的,在每一种编程语言中,基本都会有数组这种数据类型.不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构.尽管数组看起来非常基础.简单,但是我估计很多人都并没有理解这个基础数据结构的精髓. 在大部分编程语言中,数组都是从 0 开始编号的,但你是否下意识地想过,为什么数组要从 0 开始编号,而不是从 1 开始呢? 从 1 开始不是更符合人类的思维习惯吗? 你可以带着这个问题来学习接下来的内容. 如何实现随机访问? 什么是数

数据结构与算法基础学习笔记

*********************************************            ---算法与数据机结构--- 数据结构:由于计算机技术的发展,需要处理的对象不再是纯粹的数值,还有像字符,表,图像等具有一定结构的数据,需要用好的算法来处理这些数据. 我们把现实中大量而又复杂的问题以特定的数据类型的特定的存储结构保存到主存储器中,以及在此基础上为实现某个功能而执行的相应操作(查找排序),这个相应的操作也叫算法. 数据结构 = 个体 +个体的关系算法 =对存储数据的操

业余办一个【编程语言+数据结构+算法】培训班怎么样?

缘起:计算机技术在未来将会很重要,所以想业余做一些培训的事情,以前在公司也做过培训编程的事情,有这方面的经验.而数据结构与算法的重要性不言而喻了. 编程语言选用python,上手速度快,学会以后能迅速开始学习数据结构与算法. 数据结构与算法的教材选用<算法导论>. 习题选自leetcode. 不教很变态的算法,难度大概相当于ACM竞赛的中下等,因为太难就没有必要了,致远恐泥.例如红黑树之类的,可能并没有特别掌握的必要. 人数少一些,这样可以包教包会,人太多了,bug都调不过来. 面向大学里理工

数据结构与算法基础 模块一

在软件水平考试中,数据结构与算法基础的相关内容是考试上午进行的,那么,接下来将对有关数据结构的内容进行整理和归纳,以便于在整个的软考准备阶段能够更加清楚和有效率的进行学习和回忆. 以下均为个人针对于数据结构的相关内容的整理,后期根据深入的程度不断地完善和改进,如果有什么错误或者不足,希望可以提出来,一起进步. 常用的数据结构:      数组(静态数组,动态数组),线性表,链表(单向链表,双向链表,循环链表),队列,栈,树(平衡数,二叉树,查找树,堆,线索树),图等的定义,存储和操作,HASH(

最基础的动态数据结构:链表

什么是链表 链表是一种线性结构,也是最基础的动态数据结构.我们在实现动态数组.栈以及队列时,底层都是依托的静态数组,靠resize来解决固定容量的问题,而链表是真正的动态数据结构.学习链表这种数据结构,能够更深入的理解引用(或者指针)以及递归.其中链表分为单链链表和双链链表,本文中所介绍的是单链链表. 链表中的数据是存储在一个个的节点中,如下这是一个最基本的节点结构: class Node { E e; Node next; // 节点中持有下一个节点的引用 } 我们可以将链表想象成火车,每一节

数据结构和算法一(基础知识)

一.数据结构与算法基础知识 从广义上讲,数据结构就是指一组数据的存储结构.算法就是操作数据的一组方法. 从狭义上讲,就是指某些著名的数据结构和算法,比如队列.栈.堆.二分查找.动态规划等. 数据结构和算法是相辅相成的,数据结构为算法服务,算法要作用在特定的数据结构之上. 数据结构思维导图 基础数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie树 基础算法:地柜.排序.二分查找.搜索.哈希算法.贪心算法.分治算法.回溯算法.动态规划.字符串匹配算法 二.时间复杂度和空间复杂度

数据结构与算法基础

数据结构与算法基础: 顺序存储结构 链式存储结构 什么是树结构?为什么使用树结构?树的基本概念 二叉树: 任何一个节点的子节点数量不超过2 二叉树的子节点分左节点和右节点 满二叉树:所有的叶子节点都在最后一层,而且节点总数为2的n次方-1[n是树的高度]完全二叉树:所有叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点在左边连续,倒数第二节的叶子节点在右边连续 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言

五种编程语言解释数据结构与算法—链式栈

目录 五种编程语言解释数据结构与算法-链式栈 1.栈的链式存储结构介绍 1.1.逻辑结构示意图 2.栈的应用 2.1.括号匹配问题 2.2.表达式求值问题 3.栈和递归的关系 4.C语言实现链式栈 4.1.LinkStack.h文件的内容 4.2.LinkStack.c文件中的内容 4.3.main.c文件中的内容 4.4.输出结果 5.C++语言来实现链式栈 5.1.LinkStack.h文件中的内容 5.2.LinkStack.cpp文件中的内容 5.3.main.cpp文件中的内容 5.4