代码编织梦想

目录

一 抽象数据类型

二 参数传递

三 函数结果带出方式


一 抽象数据类型

1.抽象数据类型与问题求解方法

抽象数据类型(简称ADT)是指基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。

一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;它定义了一组运算,但将运算的实现过程隐藏起来。

用抽象数据类型的概念来指导问题的求解过程:

2.数据的抽象

汇编语言中十进制表示的数据98.65、9.6E3等, 它们是二进制数据的抽象;

高级语言中,给出更高一级的数据抽象,如整型、实型、字符型等, 还可以进一步定义更高级的数据抽象,如各种表、队、栈、树、图、窗口、管理器等复杂的抽象数据类型。

3.抽象数据类型

ADT Linear_list
数据元素  所有ai属于同一数据对象,i=1,2,……,n   n≥0;
逻辑结构  所有数据元素ai(i=1,2,…,n-1)存在次序关系
          <ai, ai+1>,ai无前趋,an无后继;
操作  设L为Linear_list
		Initial(L)初始化空线性表;
		Length(L)求线性表的表长;
		Get(L,i)取线性表的第i个元素;
		Insert(L,i,b)在线性表的第i个位置插入元素b;
		Delete(L,i)删除线性表的第i个元素;

4.抽象数据类型实现

实现的三种方法:

传统的面向过程的程序设计

“包”、“模型”的设计方法

面向对象的程序设计(Object Oriented Programming,简称OOP)

5.ADT的表示与实现

ADT的定义

ADT <ADT名>

          { 数据对象:<数据对象的定义>  

            关系:<结构关系的定义>

             基本操作:<基本操作的定义>  

           }ADT <ADT名>

基本操作的定义格式为:

<操作名称> (参数表)                                          

操作前提:<操作前提描述>                                            

操作结果:<操作结果描述>

关于参数传递:

参数表中的参数有值参和变参两种。

用标准C语言表示和实现ADT描述时,主要有两个方面:

一、通过结构体将int、float等固有类型组合到一起,构成一个结构类型,再用typedef为该类型或该类型指针重新起一个名字。

二、用C语言函数实现各操作。

6.算法描述规范与设计风格

 (1)算法表示格式与函数模块化

算法表示格式:

 [函数返回值类型]  函数名([形式参数及说明])

{   内部数据说明;    

执行语句组;        

      }  /*函数名*/

函数模块化

[包含文件语句]

[宏定义语句]

[自定义类型语句]

[所有子函数的原型说明]

[子函数1定义]

.

.

.

[子函数n定义]  

   [主函数定义]

(2) 算法描述要点

>加上必要的注释:注释形式可以用/*字符串*/

>避免函数返回值隐含说明

>预定义常量和类型

  # define  TRUE  1        

  # define  FALSE  0      

  # define  MAXSIZE 100    

  # define  OK  1      

  # define  ERROR  0

return <表达式>或return:用于函数结束。

break语句:可用在循环语句或switch语句中结束循环过程或跳出情况语句。

continue语句:可用在循环语句中结束本次循环过程,进入下一次循环过程。  

exit语句:表示出现异常情况时,控制退出函数。

二 参数传递

 7. 与参数传递的相关技术

变量的作用域

全局变量:程序中所有函数都可以访问的量

局部变量:只能在该函数中访问的量。

参数传递方式

参数传递是函数之间进行信息通讯的重要渠道。其参数传递的主要方式有传值传地址两类。函数参数表中的参数有两种:第一种参数只为操作提供待处理数据,又称值参;第二种参数既能为操作提供待处理数据,又能返回操作结果,也称变量参数

8关于参数传递示例源程序:

#include <stdio.h>
viod swap1(int a,int b)
  { int c;
c=a; a=b; b=c;
    printf(“swap1中的a= %d,b=%d”,a,b);
   }
viod swap2(int *a,int *b)
  { int c;
c=*a, *a=*b, *b=c;
  }
void main()
  { int x=100,y=800;
    swap1(x,y);   /*调用函数swap1()*/
printf(“\n调用swap1后x= %d,y=%d”,x,y);   /*输出调用swap1后的数据*/
x=100;y=800;
swap2(&x,&y);   /*调用函数swap2()*/
  printf(“\n调用swap2后x=%d,y=%d”,x,y);    /*输出调用swap2后的数据*/
  }

三 函数结果带出方式

9.函数结果的带出方式

三种带出方式:全程量、函数返回值、传址参数

通过参数表的参数传递是一种参数显式传递方式,而通过全局变量是一种隐式参数传递,一个函数中对全局变量的改变会影响其它程序的调用,使用全局变量必须注意这个问题。

若函数结果需要带出多个值,该怎样实现?

可以采用①全局变量方式带出,②通过地址传递带出(数组方式、结构体方式、指针方式)两类方式之一来实现。

一个全局变量方式带出的例子

int MIN;      /* 全局变量 */
 int fun1(int a[], int n) 
/*通过函数return返回最大值,通过全局变量MIN带回最小值*/
{  	int i,max;
    max=MIN=a[0];                   //给最大值最小值赋初值
    for (i=0;i<n;i++) 
    {
      if(a[i]>max) max=a[i];
      if (a[i]<MIN) MIN=a[i];
    }
    return(max);
}

一个全局变量方式带出的例子

int *fun2(int a[],int n)
/*将最大、最小值放到数组b中,通过return返回*/
{ 	static int b[2];
    b[0]=b[1]=a[0];                 //给最大值最小值赋初值
	int i;
    for (i=1;i<n;i++)
    {
		if (a[i]>b[0])
			b[0]=a[i];
		if (a[i]<b[1]) 
			b[1]=a[i];
    }
    return(b);
}

结构体方式带出的例子:

Data *fun3(int a[],int n)
/*将最大、最小值放到结构体指针p中,通过return返回*/
{	Data *p;
	int i;
	p=(Data *)malloc(sizeof(Data *));               //指针初始化
	p->max=p->min=a[0];                             //给最大值最小值赋初值
	for(i=1;i<n;i++)
	{  
		if (a[i]>p->max) 
			p->max=a[i];
		if (a[i]<p->min)
			p->min=a[i];
	}
	return(p);
}

指针方式带出的例子

Data fun4(int a[],int n) 
/*将最大、最小值放到结构体p中,通过结构体p带回返回值*/
{	Data p;
	int i;
	p.max=p.min=a[0];                           //给最大值最小值赋初值
	for(i=1;i<n;i++)
	{  
		if (a[i]>p.max) 
			p.max=a[i];
		if (a[i]<p.min)
			p.min=a[i];
	}
	return(p);
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_47552180/article/details/124620606

数据结构和算法:big-data-structure 大话数据结构 算法复杂度 线性表 非线性表 查找 排序_ewenwanw的博客-爱代码爱编程

Big-Data-Structure 大话数据结构 博文末尾支持二维码赞赏哦 _ 本文github 我们学习数据结构和算法,并不是为了死记硬背几个知识点。我们的目的是建立时间复杂度、空间复杂度意识,写出高质量的代码,能

数据结构 01 -爱代码爱编程

什么是数据结构 数据结构的定义 数据 : 数据是描述客观事物的数和字符的集合,所有能输入到计算机并可以被计算机处理的文字,数字和符号叫做数据。 数据元素 : 数据元素是数据的最基本的单位,也称为元素

小甲鱼笔记:数据结构——四大逻辑结构,算法,时间复杂度和空间复杂度-爱代码爱编程

Fighting!!!再学一遍数据结构! 一、绪论 什么是数据结构? 数据结构是一门研究非数值的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 程序设计 = 数据结构+算法 数据结构即为关系,数据元素相互之间存在一种或多种特定关系集合 逻辑结构和物理结构 数据结构分为逻辑结构和物理结构。逻辑结构:是指数据对象中数据元素之间的相

数据结构(C语言版)严蔚敏 吴伟民 编著 第1章 绪论-爱代码爱编程

数据结构(C语言版)严蔚敏 吴伟民 编著 第1章 绪论 1.1 什么是数据结构?1.2 基本概念和术语1.3 抽象数据类型的表示与实现1.4 算法和算法分析1.4.1 算法1.4.2 算法设计的要求1.4.3 算法效率的度量1.4.4 算法的存储空间需求 1.1 什么是数据结构? 用计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从

数据结构第一章 绪论-爱代码爱编程

第一章 绪论 1.1 什么是数据结构 Nicklaus教授提出: 程序=算法+数据结构 1.1.1 数据结构定义 数据元素data element:数据的基本单位,也称结点(node)或记录(record) 数据项data item:具有独立含义的数据的最小单位,也称域 数据对象:性质相同的有限个数据元素的集合,数据的一个子集 数据结构Da

数据结构课程笔记_第一章_绪论-爱代码爱编程

目录 数据结构 第一章 绪论1.1 什么是数据结构1.2 基本概念和数据四种基本逻辑结构四种基本存储结构(物理结构)数据类型抽象数据类型ADT1.3 抽象数据类型的表示和实现参数传递的方法(WithExample)1. 值传递2. 地址传递1.4 算法和算法分析时间复杂度空间复杂度 数据结构 第一章 绪论 Week4补Week1 1.1 什

c语言 顺序表的操作 程序设计框图,第1章 绪论 数据结构(C++描述).-爱代码爱编程

Presentation on theme: "第1章 绪论 数据结构(C++描述)."— Presentation transcript: 第1章 绪论 数据结构(C++描述) 目录 1。1 什么是数据结构 1。2 算法的描述 1。3 算法分析 1。4 退出 1.1什么是数据结构 1.1.1 数据结构示例 1。线性表示例 2。树形结构示例 一

数据结构与算法绪论文字笔记-爱代码爱编程

文章目录 数据结构与算法---绪论问题求解农夫过河什么是数据结构数据结构的逻辑组织数据的存储结构抽象数据类型抽象数据类型ADT例:栈的抽象数据类型ADT思考:关于抽象数据类型ADT算法算法的特性基本算法分类 数据结构与算法—绪论 问题求解 编写计算机程序的目的? —解决实际的应用问题问题抽象 —分析和抽象任务需求,建立问题模型数据抽象 —确

一篇文章学完数据结构绪论 线性表 栈和队列-爱代码爱编程

复杂度 复杂度是衡量一个解决某问题的算法效率的标准,分为时间复杂度和空间复杂度。 如果单从执行时间上考虑一个算法的优劣,那么可以对该算法进行运行以后评估时间,也叫作事后统计法,但硬件影响运行时间,所以不科学,我们一般不用。 一般从五个方面评判算法的优劣 正确性:能否获得想要的结果 可读性:是否便于阅读,注释是否齐全,能否让不懂的人一看就知道你的大

数据结构——绪论-爱代码爱编程

1.数据结构的基础概念 1.1数据(Data) 数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。也就是说,数据是对客观事物采用计算机能够识别、存储和处理的形式所进行描述。简而言之,数据就是计算机化的信息。  目前,数据已经由纯碎的数值概念发展为图像、字符、声音等各种符号。 1.2数据元素(Data Element) 数据元素

数据结构和算法期末复习-爱代码爱编程

数据结构和算法期末复习 第一章 绪论1.1 数据结构1.2 基本概念和术语1.3 算法与算法分析1.4 数据结构与表示1.*小结第二章 线性表2.1 线性表的定义2.2 顺序表2.2.1 线性表的顺序存储2.2.2 顺序表基本操作的实现2.3链表2.3.1 线性表的链式存储 第一章 绪论 数据结构是一门研究非数值计算的程序设计问题中的操作对象

数据结构——第一章 绪论习题-爱代码爱编程

目录 写在前面知识点导图严蔚敏版习题王曙燕版习题 写在前面 该习题答案非标准答案,正确不保证,如有错误望指正。 知识点导图 严蔚敏版习题 一、单项选择题(部分)2、与数据元素本身的形式、内容、相对位置、个数无关的是数据的(C、逻辑结构)逻辑结构是从具体问题抽象出来的数学模型 ,从逻辑关系上描述数据,它与数据的存储无关,也就是说与数据

数据结构第一章绪论-爱代码爱编程

计算机主要用于计算时,一般要经过如下几个步骤:首先从具体问题抽象出数学模型,然后设计一个解决数学模型的算法,最后编写程序,进行测试、调试,直到解决问题。 在此过程中寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间的关系,然后用数学语言加以描述,即建立的数学方程 例如:学生管理系统中每个学生的基本信息记录按顺序号排

数据结构-1.绪论-爱代码爱编程

什么是数据结构 定义 数据:描述客观事物的数和字符的集合 数据元素:数据的基本单位,可由若干数据项组成。节点、记录。 数据项:独立含义的数据最小单元,域、字段 数据对象:性质相同的数据元素的集合 数据结构:所有数据元素 及 数据元素之间的关系,相互之间存在某种特定关系的数据元素的集合。 运算:在数据上的操作。 数据结构 定义:描述现实世界实

数据结构 第一章 绪论-爱代码爱编程

        目录 1.1 数据结构的研究内容 1.2 基本概念和术语 1.2.1 数据、数据元素、数据项和数据对象 1.2.2 数据结构 1.逻辑结构 2.存储结构 1.2.3 数据类型和抽象数据类型 1.数据类型 2.抽象数据类型 1.3 抽象数据类型的表示与实现 1.4算法和算法分析 1.4.1 算法的定义及特性 1.4

实现strStr()-爱代码爱编程

  class Solution: def strStr(self, haystack: str, needle: str) -> int: # Func: 计算偏移表 def calShiftMat(st): dic = {} for i in ra