顺序表的基本运算

线性表的定义

#include <stdio.h>
#define MAXSIZE 100 /*顺序表的容量*/

typedef char ElemType;

typedef struct
{
    ElemType data[MAXSIZE]; /*存放顺序表的元素*/
    int length;                /*顺序表的实际长度*/
} SqList;

初始化线性表

void InitList(SqList &sq) /*初始化线性表*/
{
    sq.length = 0;
}

求线性表长度

int GetLength(SqList sq) /*求线性表长度*/
{
    return sq.length;
}

求线性表中第i个元素

int GetElem(SqList sq, int i, ElemType &e) /*求线性表中第i个元素*/
{
    if (i < 1 || i > sq.length) /*无效的i值*/
        return 0;
    else
    {
        e = sq.data[i - 1];
        return 1;
    }
}

按值查找

int Locate(SqList sq, ElemType x) /*按值查找*/
{
    int i = 0;
    while (sq.data[i] != x) /*查找值为x的第1个结点*/
        i++;
    if (i > sq.length)
        return (0); /*未找到*/
    else
        return (i + 1);
}

插入元素

int InsElem(SqList &sq, ElemType x, int i) /*插入元素*/
{
    int j;
    if (i < 1 || i > sq.length + 1) /*无效的参数i*/
        return 0;
    for (j = sq.length; j > i; j--) /*将位置为i的结点及之后的结点后移*/
        sq.data[j] = sq.data[j - 1];
    sq.data[i - 1] = x; /*在位置i处放入x*/
    sq.length++;        /*线性表长度增1*/
    return 1;
}

删除元素

int DelElem(SqList &sq, int i) /*删除元素*/
{
    int j;
    if (i < 1 || i > sq.length) /*无效的参数i*/
        return 0;
    for (j = i; j < sq.length; j++) /*将位置为i的结点之后的结点前移*/
        sq.data[j - 1] = sq.data[j];
    sq.length--; /*线性表长度减1*/
    return 1;
}

输出线性表

void DispList(SqList sq) /*输出线性表*/
{
    int i;
    for (i = 1; i <= sq.length; i++)
        printf("%c ", sq.data[i - 1]);
    printf("\n");
}

main

void main()
{
    int i;
    ElemType e;
    SqList sq;
    InitList(sq);         /*初始化顺序表sq*/
    InsElem(sq, 'a', 1); /*插入元素*/
    InsElem(sq, 'c', 2);
    InsElem(sq, 'a', 3);
    InsElem(sq, 'e', 4);
    InsElem(sq, 'd', 5);
    InsElem(sq, 'b', 6);
    printf("线性表:");
    DispList(sq);
    printf("长度:%d\n", GetLength(sq));
    i = 3;
    GetElem(sq, i, e);
    printf("第%d个元素:%c\n", i, e);
    e = 'a';
    printf("元素%c是第%d个元素\n", e, Locate(sq, e));
    i = 4;
    printf("删除第%d个元素\n", i);
    DelElem(sq, i);
    printf("线性表:");
    DispList(sq);
}
Copyright © www.huweihuang.com 2017-2019 all right reserved,powered by GitbookUpdated at 2019-03-24 21:12:56

results matching ""

    No results matching ""