码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构(1)

时间:2015-09-23 16:27:58      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

       数据结构是一门研究非数值计算的的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。又可解释为:是相互之间存在一种或多种特定关系的数据结构的集合。

        数据是对客观事物的符号的表示

        数据元素是数据的基本单位,一个数据元素可由若干个数据项组成,数据项是不可分割的的最小单位。

       数据对象是性质相同的数据元素的集合,是数据的一个子集。

         数据元素之间的相互关系称为结构,通常有下列4类结构:1.集合 2.线性结构  3.树形结构  4.图状结构或网状结构。

         数据元素之间的逻辑关系,因此又称为数据的逻辑结构

         数据结构在计算机中的表示称为数据的物理结构,又称存储结构。它包括:1.顺序存储结构 2.链式存储结构 3.索引存储结构(除数据元素存储在一地址连续的内存空间,尚需建立一个索引表,索引表中索引指示存储结点的存储位置) 4.散列存储结构(通过散列函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内。

          抽象数据类型(简称ADT)是指一个数学模型以及定义在改模型上的一组操作。也可以是指抽象数据的组织和与之相关的操作,可被看做是数据的逻辑结构及其在逻辑结构上定义的操作。

1.抽象数据类型三元组的定义

#include<stdio.h>
#include<stdlib.h>  //分配空间malloc()函数,要包含这个头文件
#include<math.h> //在math.h中的函数中,OVERFLOW的值被定义为3

#define OK 1
#define ERROR 0

typedef int ElemType;
typedef ElemType *Triplet ;
typedef int  Status ;

Status InitTriplet(Triplet *T,ElemType v1,ElemType v2,ElemType v3)  
{
    (*T)=(ElemType*)malloc(3*sizeof(ElemType));
    if(!(*T))
        exit(OVERFLOW);
    (*T)[0]=v1,(*T)[1]=v2,(*T)[2]=v3;
    return OK;
}
Status DestroyTriplet(Triplet *T)
{
    free(*T);
    *T=NULL;
    return OK;
}
Status Get(Triplet T,int i,ElemType *e)
{
    if(i<1||i>3)
    {
        printf("要获取的元素超过查找范围\n");
        return ERROR;
    }
    *e=T[i-1];
    return OK;
}
Status Put(Triplet *T,int i,ElemType e)
{
    if(i<1||i>3)
    {
        printf("要获取的元素超过查找范围\n");
        return ERROR;
    }
    (*T)[i-1]=e;
    return OK;
}
Status IsAscending(Triplet T)
{
    return(T[0]<=T[1]&&T[1]<=T[2]);
}
Status IsDescending(Triplet T)
{
    return(T[2]>=T[1]&&T[1]>=T[0]);
}
Status Max(Triplet T,ElemType *e)
{
    *e=T[0]>=T[1]?T[0]>=T[2]?T[0]:T[2]:T[1]>=T[2]?T[1]:T[2];
    return OK;
}
Status Min(Triplet T,ElemType *e)
{
    *e=T[0]<=T[1]?T[0]<=T[2]?T[0]:T[2]:T[1]<=T[2]?T[1]:T[2];
    return OK;
}
void print(Triplet T)
{
    printf("该三元数组的每项元的值为:%d %d %d\n\n",T[0],T[1],T[2]);
}
int main()
{
    Triplet T;
    int x;
    ElemType e;
    InitTriplet(&T,2,4,9);
    print(T);

    printf("请输入要获取第几个元素:");
    scanf("%d",&x);
    Get(T,x,&e);
    printf("要获取的三元组中元的值为:%d\n\n",e);

    printf("请输入要设置第几个元素为几(例如:1  20):");
    scanf("%d %d",&x,&e);
    Put(&T,x,e);
    print(T);

    if(IsAscending(T))
        printf("该三元组是递增排序\n\n");
    else
        printf("该三元组不满足递增排序\n\n");
    
    if(IsDescending(T))
        printf("该三元组是递减排序\n\n");
    else
        printf("该三元组不满足递减排序\n\n");
    
    Max(T,&e);
    printf("该三元组中元素的最大值为:%d\n\n",e);

    Min(T,&e);
    printf("该三元组中元素的最小值为:%d\n\n",e);
    
    return 0;
}

程序运行如下:

技术分享

多形数据类型:指其值的成分不确定的数据类型。

一般而言,a、b、c、d、e等作为数据元素名,i、j、k、l、m、n等用作整型变量名,p、q、r等作为指针变量名。

算法是特定问题求解步骤的一种描述,它是指令的有限序列。算法具有5个重要特性:一、有穷性 二、确定性  三、可行性  四、输入  五、输出

算法设计的要求

一、正确性  二、可读性  三、健壮性  四、效率与低存储量要求。

 

数据结构(1)

标签:

原文地址:http://www.cnblogs.com/moya-com/p/4832366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!