• 数据结构:实验三(2)(有序表)


    #include "stdafx.h"
    #include "SeqList.h"//自定义头文件
    
    int main()
    {
        SeqList myList;
        ListInitiate(&myList);//初始化
        SortListInerst(&myList, 1);//有序插入顺序表
        SortListInerst(&myList, 2);
        SortListInerst(&myList, 6);
        SortListInerst(&myList, 3);
        SortListInerst(&myList, 5);
        SortListInerst(&myList, 4);
        for(int i=0;i<myList.size;i++)
            printf("%d ", myList.list[i]);
        printf("
    ");
        return 0;
    }
    //输出 1 2 3 4 5 6

    SeqList.h源码:

    #pragma once
    #pragma once
    #include "stdio.h"
    #define MaxSize 100
    typedef int DataType;
    typedef struct {
        DataType list[MaxSize];
        int size;
    }SeqList;
    void ListInitiate(SeqList *L) {//初始化顺序表
        L->size = 0;
    }
    int ListLength(SeqList L) {//返回顺序表长度
        return L.size;
    }
    int ListInerst(SeqList *L, int i, DataType x) {//插入元素
        int j;
        if (L->size >= MaxSize) {
            printf("顺序表已满无法插入!");
            return -1;
        }
        else if (i<0 || i>L->size) {
            printf("输入参数有误!");
            return -1;
        }
        else {
            for (int j = L->size; j > i; j--)
                L->list[j] = L->list[j - 1];
            L->list[i] = x;
            L->size++;
            return 1;
        }
    }
    int ListDelete(SeqList *L, int i, DataType *x) {//删除元素
        int j;
        if (L->size <= 0) {
            printf("顺序表已空,无数据可删!");
            return -1;
        }
        else if (i<0 || i>L->size - 1) {
            printf("输入参数有误!");
            return -1;
        }
        else {
            *x = L->list[i];
            for (j = i + 1; j <= L->size - 1; j++)
                L->list[j - 1] = L->list[j];
            L->size--;
            return 1;
        }
    }
    int ListGet(SeqList L, int i, DataType *x) {//取出索引为i处的元素
        if (i < 0 || i>L.size - 1) {
            printf("参数不合法!");
            return -1;
        }
        else {
            *x = L.list[i];
            return 1;
        }
    }
    int ListFind(SeqList L, DataType x) {//查找元素并返回索引
        int i;
        bool hasFind = false;
        for (i = 0; i < L.size; i++) {
            if (x == L.list[i]) {
                return i;
                hasFind = true;
                break;
            }
        }
        if (!hasFind) {
            printf("顺序表中没有该数据!
    ");
            return -1;
        }
    }
    int SortListInerst(SeqList *L, DataType x) {
        if (L->size == 0) {
            L->list[0] = x;
            L->size++;
            return 1;
        }
        else {
            for (int i = 0; i < L->size; i++)
                if (x < L->list[i]) {
                    for (int j = L->size; j > i; j--)
                        L->list[j] = L->list[j - 1];
                    L->list[i] = x;
                    break;
                }
                else
                    L->list[L->size] = x;
            L->size++;
            return 1;
        }
    }
    
    
    
  • 相关阅读:
    01-数字转人民币读法
    词组缩写
    字符串区间比较
    字符串读入
    回文数判断
    字符串加密
    字母统计
    互质的数
    【Tools】Anaconda Operaction
    【mmwave】DeviceSurvey
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286822.html
Copyright © 2020-2023  润新知