数据结构:实验三(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("\n");
    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("顺序表中没有该数据!\n");
        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;
    }
}


posted @ 2017-03-07 21:30  SEC.VIP_网络安全服务  阅读(85)  评论(0编辑  收藏  举报