抽象数据类型 Triplet 的表示和实现

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 21:58   1715   0
#include <cstdio>
#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
#include <map>
#include <stack>
#define INF 0x3f3f3f3
#define ll long long
using namespace std;
typedef int Status;
typedef int * Triplet;
Status InitTriplet(Triplet &T,int v1,int v2,int v3)
{
    T = (int * )malloc(3*sizeof(int));
    if(!T) return 0;
    T[0] = v1;
    T[1] = v2;
    T[2] = v3;
    return 1;
}//动态内存申请了三个内存的空间
Status DestroyTriplet(Triplet &T)
{
    free(T);
    T = NULL;
    return 1;
}//销毁动态申请的内存
Status Get(Triplet T,int i,int &e)
{
    if(i<1 || i>3) return 0;
    e = T[i-1];
    return 1;
}//获取内存中的元素
Status Put(Triplet &T,int i,int e)
{
    if(i<1 || i>3) return 0;
    T[i-1] = e;
    return 1;
}//向内存中加入新元素
Status Isascend(Triplet T)
{
    if(T[0] <= T[1] && T[1] < T[2]) return 1;
    return 0;
}//判断所有元素是否是递增
Status Isdescend(Triplet T)
{
    if(T[0] >= T[1] && T[1] >= T[2]) return 1;
    return 0;
}//判断所有元素是否递减
Status MAX(Triplet T,int &e)
{
    e = (T[0]>=T[1])?
    ((T[0]>=T[2])?T[0]:T[2])
    :((T[1]>=T[2])?T[1]:T[2]);
    return 1;
}//取得最大值
Status MIN(Triplet T,int &e)
{
    e = (T[0]<=T[1])?
    ((T[0]<=T[2])?T[0]:T[2])
    :((T[1]<=T[2])?T[1]:T[2]);
    return 1;
}//取得最小值
int main()
{
    Triplet p;
    InitTriplet(p,2,3,4);
    int flag = 0,ans = 0,MAX_N = 0,MIN_N = 0;
    cout<<"初始时的所有元素";
    for(int i = 0; i<3; i++)
        cout<<p[i]<<' ';
    cout<<endl<<endl;
    Get(p,1,flag);
    cout<<"第一个数是:"<<flag<<endl<<endl;
    Put(p,1,1);
    cout<<"将第一个数更改为1后:";
    for(int i = 0; i<3; i++)
        cout<<p[i]<<' ';
    cout<<endl<<endl;
    Get(p,1,ans);
    cout<<"将第一个数改为1以后,第一个数是多少:"<<ans<<endl<<endl;
    if(Isascend(p)) cout<<"yes,it is increas"<<endl<<endl;
    else cout<<"no,it is not increase"<<endl;
    if(Isdescend(p)) cout<<"YES,IT IS DESCREAS"<<endl;
    else cout<<"NO, IT IS NOT DESCREAS"<<endl<<endl;
    MIN(p,MIN_N);
    cout<<"最小值是:"<<MIN_N<<endl<<endl;
    MAX(p,MAX_N);
    cout<<"最大值是:"<<MAX_N<<endl<<endl;
    DestroyTriplet(p);
//    int arr_len = 10;
//    int *arr;
//    arr = (int *) malloc(sizeof(int) *arr_len);
//    memset(arr,0,sizeof(int) *arr_len);
//    for(int i = 0; i<arr_len; i++)
//        arr[i] = i;
//    for(int j = 0; j<arr_len; j++)
//        cout<<arr[j]<<endl;
//    free(arr);
    return 0;
}



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP