【数据结构与算法】绪论,线性结构,线性表,顺序表 详解

以Niklus Wirth的观点,程序等于什么?

程序等于算法加数据结构。公式:“程序 = 算法 + 数据结构”。

算法的重要特性。

  1. 有穷性:算法必须能在有限的步骤之后结束。
  2. 确定性:算法的每一步骤必须明确,没有二义性。
  3. 可行性:算法中描述的操作都能通过已经实现的基本操作执行有限次来实现。
  4. 输入:一个算法有零个或多个输入。
  5. 输出:一个算法应有一个或多个输出,这些输出是对输入的明确响应。

好算法的标准。

  1. 正确性:算法应正确解决问题,对于所有的输入,都能产生满足要求的输出。
  2. 效率:算法应尽可能少地使用计算资源,包括时间和空间。
  3. 简洁性:算法应该尽可能简洁,避免不必要的复杂性。
  4. 可读性:算法应该易于理解和实现。
  5. 健壮性:对于非法或异常的输入,算法应有良好的容错能力。

线性结构的特点。

  1. 有且仅有一个被称为"第一个"的元素。
  2. 有且仅有一个被称为"最后一个"的元素。
  3. 除第一个和最后一个元素之外,其他元素都有一个唯一的前驱唯一的后继

线性结构与非线性结构的区别。

线性结构和非线性结构的主要区别在于数据元素之间的关系。

线性结构的特点:

  1. 数据元素之间存在一对一的线性关系。
  2. 线性结构有两个端点,除了第一个和最后一个元素之外,其他元素都有一个前驱和一个后继。

非线性结构的特点:

  1. 数据元素之间存在多对多的关系。
  2. 非线性结构没有明确的端点,每个元素可能有多个前驱和后继。

列出一些线性结构与非线性结构。

线性结构包括:

  1. 数组
  2. 链表(包括单链表、双链表、循环链表等)
  3. 队列(包括普通队列、双端队列、优先队列等)

非线性结构包括:

  1. 树(包括二叉树、二叉搜索树、平衡二叉树、堆、B树、B+树、红黑树等)
  2. 图(包括有向图、无向图、加权图等)
  3. 广义表

顺序表的数据结构。

struct SqList {
    ElemType *elem;
    int length;
    int listSize;
};

这个结构体包含三个成员:

  • elem 是一个指向元素类型 ElemType 的指针,用于存储顺序表的元素。
  • length 是一个整数,表示顺序表的当前长度。
  • listSize 是一个整数,表示顺序表的总容量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值