#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;
//定义顺序表
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SeqList;
//初始化顺序表
void initList (SeqList *L)
{
L -> length = 0;
}
//在尾部添加元素
int appendElem(SeqList *L,ElemType e)
{
if (L->length>=MAXSIZE)
{
printf("顺序表已满");
return 0;
}
L->data[L->length] = e;
L->length++;
return 1;
}
//遍历元素
void printElem(SeqList *L)
{
for (int i = 0;L->length > i;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
}
//插入元素
int insElem(SeqList *L,ElemType e,int place)
{
if (L->length>=MAXSIZE)
{
printf("顺序表已满");
return 0;
}
if (place < 1||place > L->length)
{
printf("插入位置错误\n");
return 0;
}
//从后向前移动函数
if(place <= L->length)
{
for (int i = L->length-1; i >= place-1; i--)
{
L->data[i+1]=L->data[i];
}
L->data[place-1]=e;
//更新长度
L->length++;
}
return 1;
}
//删除元素
int DelElem(SeqList *L,int place,ElemType *e)
{
if(place < 1 || place > L->length )
{
printf("超过删除范围\n");
return 0;
}
*e = L->data[place-1];
if (place<L->length)
{
for(int i = place;i < L->length;i++)
{
L->data[i-1] = L->data[i];
}
}
//方便查看删除的数据
L -> length--;
return 1;
}
//查找元素
int findElem(SeqList *L,int place,ElemType *e)
{
if(place < 1 || place > L->length )
{
printf("超过查找范围\n");
return 0;
}
for (int i =0;i < L->length;i++)
{
if(L->data[i] == e)
{
return i + 1;
}
}
}
//动态分配内存地址初始化
//typedef struct
//{
// ElemType *data;
// int length;
//}SeqList;
//SeqList* initList(SeqList *L)
//{
// SeqList *L = (SeqList*)malloc(sizeof(SeqList));
// L->data = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
// L->length = 0;
// return L;
//}
int main()
{
SeqList list;
initList(&list);
printf("初始化成功,目前长度占用%d\n",list.length);
printf("目前占用内存%zu字节\n",sizeof(list.data));
appendElem(&list, 88);
appendElem(&list, 95);
appendElem(&list, 10);
appendElem(&list, 81);
appendElem(&list, 23);
printElem (&list);
insElem(&list,6,2);
printElem (&list);
ElemType Deldata;
DelElem(&list,2,&Deldata);
printf("被删除的数据为:%d\n",Deldata);
printElem(&list);
return 0;
}
数据结构-顺序表(个人笔记)
发布于 8 天前 33 次阅读
Comments NOTHING