请写一个c语言算法,在顺序表中查找指定的数据,查找成功后将该数据放到顺序表前端,而把其他后退一个位置
时间: 2024-05-14 08:19:36 浏览: 5
好的,这是一个可以实现您要求的 C 语言算法,它可以在顺序表中查找指定的数据,并将找到的数据放到顺序表的前端,同时将其他数据后退一个位置:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
int LocateElem(SqList L, int elem) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == elem) {
return i;
}
}
return -1;
}
void ChangePositon(SqList *L, int index) {
int temp = L->data[index];
for (int i = index; i > 0; i--) {
L->data[i] = L->data[i-1];
}
L->data[0] = temp;
}
int main() {
SqList L;
L.length = 5;
L.data[0] = 1;
L.data[1] = 3;
L.data[2] = 5;
L.data[3] = 7;
L.data[4] = 9;
int elem = 5;
int index = LocateElem(L, elem);
if (index >= 0) {
ChangePositon(&L, index);
} else {
printf("The element is not found.\n");
}
printf("After change, the new sequence table is:\n");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
return 0;
}
```
我希望这个算法能够满足您的需求!