#include<stdio.h>
#define MAXSIZE 100
typedef int ElemType;//可以根据后续变化转变类型double,float...
typedef struct//创建顺序表
{
ElemType data[MAXSIZE];
int lenght;
}SeqList;//结构体命名
void initList(SeqList* L)//顺序表-初始化(SeqList* L)结构体指针
{
L->lenght = 0;//初始化为0
}
//顺序表-在尾部添加数据
int appendList(SeqList* L, ElemType e)//传入结构体指针和要添加的数据
{
if (L->lenght == MAXSIZE) {
printf("顺序表已满\n");
return 0;
}
L->data[L->lenght] = e;//添加数据到顺序表末尾
L->lenght++;//扩展顺序表长度
return 1;
}
void listElem(SeqList* L)//遍历顺序表内数据
{
int i;
for (i = 0;i < L->lenght;i++)//根据表长确定遍历次数,数据下标和本身位置差1,不用带=
{
printf("%d ", L->data[i]);
}
printf("\n");
}
//顺序表-插入元素
void insertList(SeqList* L,int pos,ElemType e)//顺序表,插入位置position,插入元素
{
int i;
if (L->lenght == MAXSIZE) {
printf("顺序表已满\n");
return 0;
}
if (pos<1 || pos>L->lenght) {
printf("元素插入位置错误\n");
return 0;
}
if (pos <= L->lenght) {
for (i = L->lenght - 1;i >= pos - 1;i-- )//从后往前遍历数据,遍历下标需-1 data[0]=顺序表第1个元素
{
L->data[i + 1] = L->data[i];//最后一个元素向后移动一位 =后的数赋值给=前(a=2)
}
L->data[pos - 1] = e;
L->lenght++;
return 1;
}
}
void deleteList(SeqList* L, int pos, ElemType *e)//直接选取被删除元素的地址
{
int i;
*e = L->data[pos - 1];
if (pos < L->lenght) {
for (i = pos;i < L->lenght; i++)
{
L->data[i - 1] = L->data[i];//=后的值给到=前的值,实现元素前移
}
}
L->data[pos - 1];
L->lenght--;
return 1;
}
//顺序表-查找
int findList(SeqList* L, ElemType e)
{
int i;
if (L->lenght == 0) {
printf("这是空列表\n");
return 0;
}
for (i = 0;i < L->lenght;i++)//遍历顺序表查找
{
if (L->data[i] == e) {
return i + 1;//实际位置和下标差1
}
}
return 0;
}
int main()
{
SeqList list;
initList(&list);
printf("初始化成功,目前长度占用%d\n", list.lenght);
printf("目前占用内存%zu个字节\n", sizeof(list.data));//4*100=40 数组分配10个整型变量
appendList(&list, 88);
appendList(&list, 45);
appendList(&list, 43);
appendList(&list, 17);
appendList(&list, 5);
listElem(&list);
insertList(&list, 2, 18);
listElem(&list);
ElemType Datadelete;
deleteList(&list, 2, &Datadelete);
printf("被删除的数据为%d\n", Datadelete);
listElem(&list);
printf("%d\n", findList(&list, 43));
return 0;
}
代码学习:
《数据结构(C 语言描述)》也许是全站最良心最通俗易懂最好看的数据结构课(最迟每周五更新~~)_哔哩哔哩_bilibili
老师讲的很好,很适合初学者,看一遍代码然后自己在手敲一遍在听老师讲一遍,效果很好。希望帮助到大家,也请大家多多支持这位up

被折叠的 条评论
为什么被折叠?



