【数据结构】1.1 什么是数据结构

什么是数据结构

  • “数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”
    –Sartaj Sahni《数据结构、算法与应用》
  • “数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现。”
    –Clifford A.Shaffer《数据结构与算法分析》
  • “数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。”
    –中文维基百科

可以看得出,“数据结构”同“算法”是经常同时出现的,那如何准确定义数据结构呢,我想仅凭两三句话是很难讲清楚的,我们不妨举三个例子:

  1. 如何在书架上摆放图书?
    图书的摆放要使得两个相关操作方便实现:
    操作1:新书怎么插入?
    操作2:怎么找到某本指定的书?

方法1:随便放
操作1:新书怎么插入

    --哪里有空放哪里,一步到位!

操作2:怎么找到某本指定的书?

    --……累死

方法2: 按照书名的拼音字母顺序排放
操作1:新书怎么插入?

    -- 新进一本《阿Q正传》……

操作2:怎么找到某本指定的书?

   **二分查找!**

看得出操作1无法完成
方法3:把书架划分成几块区域,每块区域指定摆放某种类别的书;在每种类别内,按照书名的拼音字母顺序排放
这种方法的一个最大好处是,不管我在每一个类里面做什么样的操作,总归来说,这个图书的规模都小了很多
操作1:新书怎么插入

 --先定类别,二分查找确定位置,移出空位

操作2:怎么找到某本指定的书?

 --先定类别,再二分查找

——问题:空间如何分配?类别应该分多细?
需要多大的书架,类需要分多细,这也是很令人头痛的问题
解决问题方法的效率,跟数据的组织方式有关

  1. 写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数

循环实现

void PrintN(int N)
{
   
    int i;
    for(i=1;i<=0;i++)
    {
   
        print("%d\n",i);
    }
    return;
}

递归实现

void PrintN(int N)
{
   
    if(N)
    {
   
        PrintN(N-1);
        printf("%d\n",N);
    }
    return;
}

测试函数

#include<stdio.h>
void PrintN(int N);
int main()
{
   
    int N;
    scanf("%d",&N)
    PrintN(N);
    return 0;
}

递归函数对空间的占用有时会是很恐怖的,比如我们这道题,它会非正常中止
解决问题方法的效率,跟空间的利用效率有关

3.写程序计算给定多项式在给定点x处的值
f ( x ) f(x) f(x)= a 0 a_0 a0+ a 1 a_1 a1 x x x+…+

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值