#include <stdio.h>
#define Maxsize 50
typedef int Elemtype;
typedef struct {
Elemtype data[Maxsize];
int len;
} SQList;
bool ListInsert(SQList &L, int pos, Elemtype elemtype) {
if (pos < 0 || pos >= L.len) {
return false;
}
L.len++;
for (int i = L.len - 2; i >= pos; i--) {
L.data[i + 1] = L.data[i];
}
L.data[pos] = elemtype;
return true;
}
void List_Printf(SQList L) {
for (int i = 0; i < L.len; i++) {
printf("%2d", L.data[i]);
}
}
int ListSearch(SQList L, Elemtype element) {
for (int i = 0; i < L.len; i++) {
if (L.data[i] == element) {
return i;
}
}
return -1;
}
int ListSearch1(SQList L, Elemtype element) {
if (element < 0 || element >= L.len) {
return -1;
}
for (int i = 0; i < L.len; i++) {
if (i == element) {
return L.data[i];
}
}
}
bool ListDelete(SQList &L, Elemtype elemtype) {//按值删除
for (int i = 0; i < L.len; i++) {
if (elemtype == L.data[i]) {
for (int j = i; j < L.len - 1; j++) {
L.data[j] = L.data[j + 1];
}
L.len--;
return true;
}
}
return false;
}
bool ListDelete1(SQList &L, Elemtype elemtype) {//按位删除
if (elemtype < 0 || elemtype >= L.len) {
return false;
}
for (int i = elemtype; i < L.len - 1; i++) {
L.data[i] = L.data[i + 1];
}
L.len--;
return true;
}
bool ListInsert(SQList &L, Elemtype elemtype) {//尾部插入
L.len++;
L.data[L.len - 1] = elemtype;
return true;
}
bool ListInsert1(SQList &L, Elemtype elemtype, int pos) {//按位插入
if (pos < 0 || pos >= L.len) {
return false;
}
L.len++;
for (int i = L.len - 2; i >= pos; i--) {
L.data[i+1] = L.data[i ];
}
L.data[pos] = elemtype;
return true;
}
int main() {
SQList L;
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.len = 3;
// List_Printf(L);
printf("-------------------------------\n");
// bool flag = ListInsert(L, -1, 6);
// if (flag == true) {
// printf("success\n");
//
// } else {
// printf("fail\n");
// }
// List_Printf(L);
// bool pos = ListDelete(L, 6);//按值删除
// if (pos == true) {
// printf("删除成功\n");
// } else {
// printf("删除失败\n");
// }
// List_Printf(L);
// bool pos1 = ListDelete1(L, 0);//按位删除
// if (pos1 == true) {
// printf("删除成功\n");
// } else {
// printf("删除失败\n");
// }
// List_Printf(L);
// List_Printf(L);
// //增加元素
// bool flag = ListInsert(L, 8);//尾部插入
// if (flag == true) {
// printf("尾部插入成功\n");
// }
//
// List_Printf(L);
List_Printf(L);
//增加元素
bool flag = ListInsert1(L, 8, 1+1);//按位插入
if (flag == true) {
printf("按位插入成功\n");
}
List_Printf(L);
return 0;
}
c++ 学习之 ----------------------线性表的实现
最新推荐文章于 2024-07-25 12:39:48 发布