当前位置: 首页 > news >正文

数据结构:数据类型与抽象数据类型

数据类型与抽象数据类型

  • 数据类型
    • 基本数据类型
    • 构造数据类型
    • 指针类型
    • 枚举类型
  • 抽象数据类型(ADT)
    • 抽象数据类型的组成部分
    • 常见的抽象数据类型示例
  • 数据类型与抽象数据类型的区别
  • 实现抽象数据类型的具体方式
    • 用数组实现栈
    • 用链表实现栈
  • 总结

数据类型

数据类型(Data Type)是编程语言中用于定义变量和常量所能存储数据的种类,以及能对这些数据进行的操作的集合。数据类型可以分为以下几类:

基本数据类型

  • 整型(Integer):用于表示整数。例如,在C语言中,int是一个整型数据类型。
  • 浮点型(Floating Point):用于表示带有小数的数字。例如,floatdouble是常见的浮点型数据类型。
  • 字符型(Character):用于表示单个字符。在C语言中,char用于表示字符。
  • 布尔型(Boolean):用于表示真或假。在C语言中,通常使用int来表示布尔值(0表示假,非0表示真),但在现代编程语言中,有专门的bool类型。

构造数据类型

  • 数组(Array):用于表示相同数据类型的有序集合。数组的大小是固定的,可以通过索引来访问其元素。
    //以C为例
    int arr[5] = {1, 2, 3, 4, 5};
    
  • 结构体(Structure):用于组合不同数据类型的变量,形成一种新的数据类型。
    //以C为例
    struct Student {char name[50];int age;float gpa;
    };
    
  • 联合体(Union):与结构体类似,但它的所有成员共享同一块内存,因此任何时候只能有一个成员有效。
    //以C为例
    union Data {int i;float f;char str[20];
    };
    

指针类型

  • 指针(Pointer):用于存储内存地址,可以指向任何数据类型的变量。
    //以C为例
    int a = 10;
    int *p = &a; // p是一个指向整数的指针
    

枚举类型

  • 枚举(Enumeration):定义一组命名的整数常量。
    //以C为例
    enum Color { RED, GREEN, BLUE };
    

抽象数据类型(ADT)

抽象数据类型(Abstract Data Type, ADT) 是一个更高层次的抽象,它定义了一种数据及其相关操作,而不涉及其具体实现。ADT强调数据的逻辑结构和操作的规范,而不关心数据的存储和实现方式。

抽象数据类型的组成部分

  1. 数据对象:描述数据的逻辑结构。例如,一个队列的逻辑结构是一个有序的元素集合。
  2. 操作:定义了可以在数据对象上进行的操作。例如,对于队列,可以有入队(enqueue)、出队(dequeue)等操作。

常见的抽象数据类型示例

  1. 栈(Stack)

    • 数据对象:有序的元素集合,遵循后进先出(LIFO, Last In First Out)原则。
    • 操作
      • push(item):将元素item压入栈顶。
      • pop():移除并返回栈顶元素。
      • peek():返回栈顶元素但不移除它。
      • isEmpty():检查栈是否为空。
  2. 队列(Queue)

    • 数据对象:有序的元素集合,遵循先进先出(FIFO, First In First Out)原则。
    • 操作
      • enqueue(item):将元素item添加到队列尾部。
      • dequeue():移除并返回队列头部元素。
      • front():返回队列头部元素但不移除它。
      • isEmpty():检查队列是否为空。
  3. 列表(List)

    • 数据对象:有序的元素集合,可以是线性表。
    • 操作
      • insert(position, item):在指定位置插入元素item
      • remove(position):移除指定位置的元素。
      • get(position):返回指定位置的元素。
      • size():返回列表的大小。
      • isEmpty():检查列表是否为空。

数据类型与抽象数据类型的区别

  • 数据类型

    • 具体的实现:数据类型是编程语言中具体定义的,它包括数据的存储方式和操作。例如,int类型在C语言中表示一个整型变量,可以进行加减乘除等操作。
    • 实现层次:数据类型是语言的基础部分,直接操作内存。
  • 抽象数据类型

    • 抽象的概念:抽象数据类型是对数据及其操作的抽象描述,不关心具体的实现细节。例如,栈的抽象数据类型定义了栈的操作(pushpop等)但不规定栈的具体实现方式,可以用数组实现,也可以用链表实现。
    • 抽象层次:抽象数据类型提供了一种从逻辑上组织和操作数据的方式,提高了代码的可读性和可维护性。

实现抽象数据类型的具体方式

不同的抽象数据类型可以有多种实现方式。例如,栈可以通过数组或链表来实现:

用数组实现栈

//以C为例
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;void push(int item) {if (top < MAX_SIZE - 1) {stack[++top] = item;} else {printf("Stack Overflow\n");}
}int pop() {if (top >= 0) {return stack[top--];} else {printf("Stack Underflow\n");return -1;}
}

用链表实现栈

//以C为例
struct Node {int data;struct Node* next;
};struct Node* top = NULL;void push(int item) {struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = item;newNode->next = top;top = newNode;
}int pop() {if (top != NULL) {int item = top->data;struct Node* temp = top;top = top->next;free(temp);return item;} else {printf("Stack Underflow\n");return -1;}
}

总结

  • 数据类型是具体的编程语言定义的数据及其操作。
  • 抽象数据类型(ADT) 是对数据结构及其操作的抽象描述,强调数据的逻辑结构和操作的规范。
  • 数据类型关注数据的存储和操作方式,而抽象数据类型关注数据的功能和行为。
  • 抽象数据类型可以有多种具体实现方式,具体实现方式可以选择最适合的存储结构和操作方法。
http://www.lryc.cn/news/408616.html

相关文章:

  • 西方逻辑史简介
  • 【论文10】复现代码tips
  • 分布式缓存获取以及设置
  • SMO算法,platt论文的原始算法及优化算法
  • 2.3 openCv -- 对矩阵执行掩码操作
  • 【Django】 js实现动态赋值、显示show隐藏hide效果
  • qt--做一个拷贝文件器
  • Eclipse 搭建 C/C++ 开发环境以及eclipse的使用
  • 【初阶数据结构】复杂度算法题篇
  • 20240725项目的maven环境报红-重新配置maven
  • 若依 ruoyi poi Excel合并行的导入
  • 优化算法:1.遗传算法(GA)及Python实现
  • 企业化运维(8)Docker容器技术
  • Unity C#底层原理(二)
  • 计算机网络-配置路由器ACL(访问控制列表)
  • 51单片机嵌入式开发:20、STC89C52R基于C51嵌入式点阵广告屏的设计
  • VLC输出NDI媒体流
  • WiFi 局域网通信 - 发现服务和解析
  • ChatGPT建议前端学习计划
  • YOLO5项目目录最强解析
  • 【python】sklearn基础教程及示例
  • Linux:传输层(2) -- TCP协议(2)
  • AcWing 802. 区间和
  • 实验2-2-1 温度转换
  • Spark实时(六):Output Sinks案例演示
  • 在SQL编程中DROP、DELETE和TRUNCATE的区别
  • 【AI大模型】Prompt 提示词工程使用详解
  • 学习记录day18——数据结构 算法
  • 一篇文章带你学完Java所有的时间与日期类
  • 利用GPT4o Captcha工具和AI技术全面识别验证码