#include <stdio.h>
#include <windows.h>
#define MAXSIZE 10
typedef struct
{
int data[MAXSIZE];
int length;
} SeqList;
void InitList(SeqList *L); // 初始化顺序表
void InsertList(SeqList *L, int i, int e); // 插入数据
void DeleteElem(SeqList *L, int n, int *e); // 删除数据
int IsEmpty(SeqList L); // 判空,空返回1
void DestoryList(SeqList *L);//销毁
int GetElem(SeqList L, int n);//获取第n个元素
void PrintList(SeqList L);//打印整个顺序表
int LocateElem(SeqList L, int e);//返回第一个与e相等元素的下标
int main(void)
{
SeqList L;
int tmp;
InitList(&L);
for (int i = 1; i <= 5; i++)
InsertList(&L, i, i);
PrintList(L);
DeleteElem(&L, 3, &tmp);
printf("元素:\"%d\"已刪除!\n", tmp);
PrintList(L);
InsertList(&L, 2, 9);
PrintList(L);
system("pause");
return 0;
}
int LocateElem(SeqList L, int e)
{
int pos = -1;
for (int i = 0; i < L.length - 1; i++)
{
if (e == L.data[i])
{
pos = i;
}
}
return pos;
}
void InitList(SeqList *L)
{
for (int i = 0; i < MAXSIZE; i++)
{
L->data[i] = 0;
}
L->length = 0;
}
void InsertList(SeqList *L, int i, int e)
{
int j;
if (i < 1 || i > L->length + 1)
{
printf("位置非法,插入失败!\n");
return;
}
if (L->length == MAXSIZE)
{
printf("顺序表已满,插入失败!\n");
return;
}
for (j = L->length; j >= i; j--)
{
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
}
void DeleteElem(SeqList *L, int n, int *e)
{
if (n < 1 || n > L->length)
{
printf("刪除位置非法!\n");
return;
}
*e = L->data[n - 1];
for (int i = n; i < L->length; i++)
{
L->data[i - 1] = L->data[i];
}
L->length--;
}
int IsEmpty(SeqList L)
{
return !(L.length);
}
void DestoryList(SeqList *L)
{
L->length = 0;
}
int GetElem(SeqList L, int n)
{
return (n < 1 || n > L.length) ? -1 : L.data[n - 1];
// if(n<1||n>L.length)
// {
// return -1;
// }
// else
// {
// return L.data[n-1];
// }
}
void PrintList(SeqList L)
{
if (L.length)
{
for (int i = 0; i < L.length; i++)
{
printf("%d ", L.data[i]);
}
printf("\n");
}
}
【C语言】静态顺序表的基本操作
于 2023-08-06 13:21:06 首次发布