数据结构之顺序表的基本操作(c语言版)
程序员文章站
2022-03-23 09:20:06
...
#include<stdio.h>
#include<stdbool.h>
#define MaxSize 50
typedef struct{
char data[MaxSize];
int length;
}SqList;
//插入
bool ListInsert(SqList *L, int i,char e){
if(i < 1 || i > L->length + 1)//i从i开始,但数组下表从0开始
return false;
if(L->length >= MaxSize)
return false;
for(int j = L->length; j >= i; j--)
L->data[j] = L->data[j-1];
L->data[i-1] = e;
L->length ++ ;
return true;
}
//删除
bool ListDelete(SqList *L,int i,char *e){
if(i < 1 || i > L->length)
return false;
e = L->data[i-1];
for(int j=i;j < L->length;j++){
L->data[j-1] = L->data[j];
}
L->length--;
return true;
}
//按值查找
int LocateElem(SqList L,char e){
int i;
for(i = 0; i < L.length; i++){
if(L.data[i] == e)
return i+1;
}
return 0;
}
int main(){
SqList sq;
int i;
char num;
printf("请输入顺序表的长度,不大于50\n");
scanf("%d",&sq.length);
getchar();
for(i = 0 ; i < sq.length; i++){
scanf("%c",&sq.data[i]);
}
getchar();
printf("您输入的顺序表为:\n");
for(i = 0;i < sq.length;i++){
printf("%c ",sq.data[i]);
}
printf("\n请输入要 插入的值和位置,以空格分隔");
scanf("%c",&num);
scanf("%d",&i);
//printf("%c%d",num,i);
ListInsert(&sq,i,num);
printf("插入后的顺序表为:");
for(i = 0;i < sq.length;i++){
printf("%c ",sq.data[i]);
}
printf("\n请输入要删除的元素的位置\n");
getchar();
scanf("%d",&i);
ListDelete(&sq,i,&num);
printf("删除后的顺序表为\n");
for(i = 0;i < sq.length;i++){
printf("%c ",sq.data[i]);
}
getchar();
printf("\n请输入查找的元素:");
scanf("%c",&num);
i = LocateElem(sq,num);
printf("%d",i);
}
上一篇: Smith Numbers (POJ-1142)(素数判定+整数分解)
下一篇: 排序问题