数据结构 顺序表的简单排列

本文介绍了一种基于C语言实现的顺序表数据结构及其基本操作,包括初始化、打印、尾插元素、删除指定元素及冒泡排序等。通过具体代码示例展示了如何使用这些功能,并提供了测试函数验证实现的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化

打印顺序表

尾插一个元素

只删除第一个指定元素

删除所有指定元素

判断顺序表是否为空  为空返回1 不为空返回0 

冒泡排序

#pragma once
#include <stdio.h>
#define SeqListMax 1000
#define TITLE printf("\n==============%s==============\n",__FUNCTION__);


typedef char SeqType;
typedef struct SeqList{
    SeqType data[SeqListMax];
    size_t size;
}SeqList;


void SeqListInit(SeqList* seq);  //初始化
void SeqListPrint(SeqList *seq);//打印顺序表
void SeqListPushBack(SeqList* seq, SeqType value); //尾插一个元素
void SeqListRemove(SeqList* seq, SeqType value); //只删除第一个指定元素
void SeqListRemoveAll(SeqList* seq, SeqType value);//删除所有指定元素
void SeqListBubbleSort(SeqList* seq); //冒泡排序
size_t SeqListSize(SeqList* seq); //判定顺序表是否为空
//void SeqListBubbleSortEx(SeqList* seq);//选择排序
#include "seqlist.h"



void SeqListInit(SeqList* seq)
{
    if(seq==NULL)
    return;
    seq->size=0;
}

void SeqListPrint(SeqList* seq)
{
    if(seq==NULL)
    return;
    size_t i = 0;
    for(;i<seq->size;i++)
    {
        printf("[%c] ",seq->data[i]);
    }
    printf("\n");
}

void SeqListPushBack(SeqList* seq, SeqType value)
{
    if(seq==NULL)
    return;
    if(seq->size>=SeqListMax)
    {
        printf("顺序表已满!\n");
        return;
    }
    seq->data[seq->size]=value;
    seq->size++;
}

void SeqListRemove(SeqList* seq, SeqType value)
{
    if(seq==NULL)
    return;
    if(seq->size==0)
    //顺序表为空
    return;
    int i = 0;
    for(;i<seq->size;i++)
    {
        if(seq->data[i]==value)
        break;
    }
    for(;i<seq->size;i++)
    {
        seq->data[i]=seq->data[i+1];
    }
}

void SeqListRemoveAll(SeqList* seq, SeqType value)
{
    if(seq==NULL)
    return;
    if(seq->size==0)
    //空顺序表
    return;
    int i = 0;
    int flag = 0;
    for(;i<seq->size;i++)
    {
        if(seq->data[i]==value)
        flag++;
    }
    for(i=0;i<flag;i++)
    {
        SeqListRemove(seq,value);
    }
}

size_t SeqListSize(SeqList* seq)
{
    if(seq==NULL)
    return;
    if(seq->size==0)
    return 1;
    else
    return 0;
}

void swap(SeqType* a,SeqType* b)
{
    SeqType x;
    x = *a;
    *a = *b;
    *b = x;
}

void SeqListBubbleSort(SeqList* seq)
{
    if(seq==NULL)
    return;
    int i = 0;
    for(;i<seq->size;i++)
    {
        int j = 0;
        for(;j<seq->size-1-i;j++)
        {
            if(seq->data[j]>seq->data[j+1])
            swap(&seq->data[j],&seq->data[j+1]);
        }
    }
}
////////////////////////////////////////////
//             以下是测试代码             //
///////////////////////////////////////////

void TestSeqListInit()
{
    TITLE;
    SeqList seq;
    SeqListInit(&seq);
}

void TestSeqListPushBack()
{
    TITLE;
    SeqList seq;
    SeqListInit(&seq);
    SeqListPushBack(&seq,'a');
    SeqListPushBack(&seq,'b');
    SeqListPushBack(&seq,'c');
    SeqListPushBack(&seq,'d');
    SeqListPrint(&seq);
}

void TestSeqListRemove()
{
    TITLE;
    SeqList seq;
    SeqListInit(&seq);
    SeqListPushBack(&seq,'a');
    SeqListPushBack(&seq,'b');
    SeqListPushBack(&seq,'b');
    SeqListPushBack(&seq,'c');
    SeqListPushBack(&seq,'d');
    SeqListRemove(&seq,'b');
    SeqListPrint(&seq);
}

void TestSeqListRemoveAll()
{
    TITLE;
    SeqList seq;
    SeqListInit(&seq);
    SeqListPushBack(&seq,'a');
    SeqListPushBack(&seq,'b');
    SeqListPushBack(&seq,'b');
    SeqListPushBack(&seq,'c');
    SeqListPushBack(&seq,'d');
    SeqListRemoveAll(&seq,'b');
    SeqListPrint(&seq);
}

void TestSeqListSize()
{
    TITLE;
    int i = 0;
    SeqList seq;
    SeqListInit(&seq);
    SeqListPushBack(&seq,'a');
    SeqListPushBack(&seq,'b');
    SeqListPushBack(&seq,'c');
    SeqListPushBack(&seq,'d');
    i = SeqListSize(&seq);
    printf("[%d]\n",i);
    SeqListInit(&seq);
    i = SeqListSize(&seq);
    printf("[%d]\n",i);
}

TestSeqListBubbleSort()
{
    TITLE;
    SeqList seq;
    SeqListInit(&seq);
    SeqListPushBack(&seq,'d');
    SeqListPushBack(&seq,'b');
    SeqListPushBack(&seq,'c');
    SeqListPushBack(&seq,'a');
    SeqListPrint(&seq);
    SeqListBubbleSort(&seq);
    SeqListPrint(&seq);
}

int main()
{
    TestSeqListInit();
    TestSeqListPushBack();
    TestSeqListRemove();
    TestSeqListRemoveAll();
    TestSeqListSize();
    TestSeqListBubbleSort();
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值