创建一个顺序表

#pragma once //物理文件角度,防止头文件重复引

#include<stdio.h>

#include<assert.h>

#include <stdlib.h>

typedef int DataType ;

#define MAX_SIZE (100)

typedef struct Seqlist{

    DataType array[ MAX_SIZE ];

    int size;//保存顺序表里已经存的数据个数;当前可用下标

}Seqlist;

//初始化

void SeqlistInit(Seqlist  *pSeq)

{

    assert(pSeq != NULL);

    pSeq->size = 0;

}

//销毁

void Seqlistdestroy(Seqlist *pSeq)

{

    assert(pSeq);

    pSeq->size = 0;

}

//尾插

void Seqlistpushback(Seqlist *pSeq, DataType data)

{

    if (pSeq->size = MAX_SIZE)

    {

        assert(0);

        return;

    }

    pSeq->array[pSeq->size] = data;

    pSeq->size++;

}

//头插

void Seqlistpushfront(Seqlist *pSeq,DataType data)

{

    assert(pSeq);

    int size = pSeq->size;

    if (pSeq->size >= MAX_SIZE)

    {

        printf("满了\n");

        assert(0);

        return;

    }

 

    for (int i = size; i > 0; i--){

        pSeq->array[i] = pSeq->array[i-1];

    }

    pSeq->array[0] = data;

    pSeq->size++;

}

//随意插

void Seqlistinsert(Seqlist *pSeq, DataType data,int pos)

{

    assert(pSeq);

    assert(pos >= 0 && pos <= pSeq->size);

    if (pSeq->size >= MAX_SIZE)

    {

        printf("满了\n");

        assert(0);

        return;

    }

    int size = pSeq->size;

    for (int i = size ; i >= pos; i--)

    {

        pSeq->array[i+1] = pSeq->array[i];

    }

    pSeq->array[pos] = data;

    pSeq->size++;

 

}

//头删

void Seqlistpopfront(Seqlist *pSeq)

{

    assert(pSeq);

    if (pSeq->size <= 0)

    {

        printf("空的\n");

        assert(0);

        return;

    }

    int size = pSeq->size;

    for (int i = 0; i < size - 1; i++){

        pSeq->array[i] = pSeq->array[i + 1];

    }

    pSeq->size--;

}

//尾删

void Seqlistpopback(Seqlist *pSeq)

{

    if (pSeq->size = 0)

    {

        assert(0);

        return;

    }

    pSeq->size--;

}

//随意删

void Seqlistback(Seqlist *pSeq,int pos)

{

    assert(pSeq);

    assert(pos >= 0 && pos <= pSeq->size);

    if (pSeq->size >= MAX_SIZE)

    {

        printf("空了\n");

        assert(0);

        return;

    }

    int size = pSeq->size;

    for (int i = pos; i < size - 1; i++)

    {

        pSeq->array[i] = pSeq->array[i + 1];

    }

    pSeq->size--;

}

//打印

void SeqlistPrint(const Seqlist * pSeq)

{

    for (int i = 0; i < pSeq->size; i++)

    {

        printf("%d", pSeq->array[i]);

    }

}

//查找

int SeqlistFind(Seqlist *pSeq, DataType data)

{

    for (int i = 0; i < pSeq->size; i++)

    {

        if (data == pSeq->array[i])

        {

            return i;

        }

    }

    return -1;

}

void test()

{

    Seqlist Seqlist;

    Seqlistpushback(&Seqlist, 1);

    Seqlistpushback(&Seqlist, 2);

    Seqlistpushback(&Seqlist, 3);

    SeqlistPrint(&Seqlist);

 

}

猜你喜欢

转载自blog.csdn.net/Summer___Hui/article/details/84024077
今日推荐