#include <stdio.h>
#define error printf
struct List;
typedef int ElementType;
typedef struct List *List;
struct List
{
ElementType array[100];
int num;
};
/*list BuildList()
{
list list;
list->array = malloc(sizeof(ElementType));
list->num = 0;
}*/
void initialize(List list)
{
list->num = 0;
}
ElementType FoundI(List list,int i) //查找序号为i的元素
{ //注意:数组的序号从0开始
return list->array[i];
}
int FoundValue(List list, ElementType x) //查找第一个值为x的元素
{
int i;
for (i = 0; i < list->num; i++)
if (list->array[i] == x)
break;
if (i == list->num)
{
error("the value is not exit!");
return 0;
}
return i;
}
void InsertFirst(List list, ElementType value) //插入新元素作为第一个元素
{
int i;
for (i = list->num; i >= 0; i--)
list->array[i + 1] = list->array[i];
list->array[0] = value;
list->num++;
}
void InsertLast(List list, ElementType value)
{
list->array[list->num++] = value; //注意:数组下标从0开始,故在插入之前
//数组内序号为list->num是没有元素的
}
void InsertI(List list, ElementType value,int i) //将元素插入到第i个位置
{ //注意:数组是从下标为0开始的,故插入的元素应插入到下标为i-1的位置
int k;
for (k = list->num; k >= i; k--)
list->array[k + 1] = list->array[k];
list->array[k] = value;
list->num++;
}
void DeleteFirst(List list) //删除第一个元素
{
int i;
for (i = 0; i < list->num - 1; i++)
list->array[i] = list->array[i + 1];
}
void DeleteLast(List list) //删除最后一个元素
{
list->num--;
}
void DeleteI(List list, int i) //删除第i个元素
{
for (; i < list->num; i++) //注意:数组的下标从零开始
list->array[i - 1] = list->array[i];
list->num--;
}
int main()
{
struct List list;
initialize(&list);
initialize(&list);
InsertFirst(&list, 3);
InsertFirst(&list, 9);
InsertFirst(&list, 21);
InsertLast(&list, 18);
InsertI(&list, 22, 2);
DeleteLast(&list);
DeleteI(&list, 2);
printf("%d\n", list.num);
printf("%d\n", FoundValue(&list, 18));
printf("%d\n", list.array[3]);
printf("%d\n", FoundI(&list, 0));
}
数据结构用数组当作线性表
最新推荐文章于 2024-03-06 20:59:10 发布