2025王道数据结构19页第二大题03

本文介绍了如何在C语言中使用结构体和函数实现静态顺序表,包括初始化、创建、遍历以及删除所有特定值的元素的过程。
摘要由CSDN通过智能技术生成

#include<stdio.h>
#define maxsize 10
//静态顺序表的定义 
typedef struct{
    int data[maxsize];
    int length;
}SqList;
//初始化静态顺序表 
void InitList(SqList &L){
    for(int i=0;i<maxsize;i++){
        L.data[i]=0;
    }
    L.length=0;
}
//创建顺序表 
void CreateList(SqList &L){
    int num;  
    printf("请输入要往顺序表中加入的整数(输入9999退出):");  
    while(scanf("%d", &num) == 1 && num != 9999 && L.length < maxsize) //第一个判断是不是输入一个整数 
    {  
        L.data[L.length++] = num;  
        printf("顺序表的长度是:%d\n", L.length);  
        printf("剩余位置的数量:%d\n", (maxsize - L.length));  
        printf("请输入要往顺序表中加入的整数(输入9999退出):");  
    } 
}
//遍历静态顺序表
void TravelList(SqList &L){
    for(int i=0;i<L.length;i++){
        printf("%d ",L.data[i]);
    }
    printf("\n");
}
//删除所有值为x的元素 
void DeleteSame(SqList &L,int x){
    int same;//前面有几个连续的x元素 
    for(int i=0;i<L.length;i++){
        if(L.data[i]==x)//如果是x,same的值加1 
            same+=1;
        else if(L.data[i]!=x&&same==0)//如果不是x,same是0,不用移动 
            continue; 
        else if(L.data[i]!=x&&same!=0)//如果不是x,same不是0 
            L.data[i-same]=L.data[i];//当前位置移动的数到第一个x出现的位置 
            L.data[i]=x;//当前位置位置x,same的值不用改变 
    }
    L.length=L.length-same;//表长减少same 
    printf("删除了%d个%d:\n",same,x);
}
int main()
{
    SqList L;
    InitList(L);
    CreateList(L);
    printf("静态顺序表遍历的结果是:");
    TravelList(L);
    int x;
    printf("请输入你要删除的数:");
    scanf("%d",&x);
    DeleteSame(L,x);
    printf("删除所有的%d后数组遍历的结果是:",x);
    TravelList(L);
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值