#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];
int length;
}Sqlist;
bool ListInsert(Sqlist &l, int i, ElemType e) {
if (i<1 || i>l.length + 1) {
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, ElemType& e) {
if (i < 0 || i >= l.length) {
return false;
}
if (l.length == 0) {
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;
}
bool ListChange(Sqlist& l, int i, ElemType e) {
if (i<0 || i>l.length) {
return false;
}
else{
l.data[i - 1] = e;
}
return true;
}
int LocateElem(Sqlist l, ElemType e) {
for (int i = 0; i <= l.length - 1; i++) {
if (e == l.data[i]) {
return i + 1;
}
}
return 0;
}
void PrintList(Sqlist&l) {
for (int i = 0; i <l.length; i++) {
printf("%3d", l.data[i]);
}
printf("\n");
}
int main() {
Sqlist L;
ElemType del;
int elem_pos;
bool ret;
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.length = 3;
ret=ListInsert(L, 2, 34);
if (ret) {
printf("Output Successfully.\n");
PrintList(L);
}
else {
printf("Output Failed.\n");
}
ret = ListDelete(L, 2, del);
if (ret) {
printf("Delete Successfully.\n");
PrintList(L);
}
else {
printf("Delete Failed.\n");
}
elem_pos=LocateElem(L, 3);
if (elem_pos)
{
printf("Locate Successfully.\n");
printf("The Position is %d.\n", elem_pos);
}
else {
printf("Locate Failed.\n");
}
ret = ListChange(L, 2, 29);
if (ret) {
printf("Change Successfully.\n");
PrintList(L);
}
else {
printf("Change Failed.\n");
}
return 0;
}
今日学习了顺序表的各种操作,在这里自己编写了代码并成功运行。小做记录。