#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;
}
2025王道数据结构19页第二大题03
最新推荐文章于 2024-11-13 21:48:33 发布
本文介绍了如何在C语言中使用结构体和函数实现静态顺序表,包括初始化、创建、遍历以及删除所有特定值的元素的过程。
摘要由CSDN通过智能技术生成