目录
练习: 建立一个顺序表L={21,23,14,5,56,17,31},然后在第3个位置插入元素68,最后依次显示当前线性表中的数据元素
1.SqList.h
引入头文件,#deifne定义,typedef定义,函数声明
#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include <stdio.h>
#include <stdbool.h>
#define MaxSize 10//顺序表最大容量
typedef int DataType;//方便使插入元素的类型与数组list中的类型相同
typedef struct
{
DataType list[MaxSize];
int size;//顺序表当前长度
}SqList;
void ListInitiate(SqList* L);//初始化顺序表
bool ListInsert(SqList* L, int i, DataType a);//顺序表给第i个元素前插入元素
int ListLength(SqList* L);//返回顺序表L的当前元素个数
bool ListGet(SqList* L, int i, DataType* y);//从顺序表中取元素,带回y
2.SqList.c
顺序表的操作
#include "SqList.h"
void test()
{
DataType y = 0;
int i = 0;
SqList L;
ListInitiate(&L);//初始化顺序表,i>=0
//1
DataType arr[] = {21,23,14,5,56,17,31};
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
ListInsert(&L, i, arr[i]);//顺序表给第i个元素前插入元素
}
// 2
//DataType n = 0;
// for (i = 0; i < 7; i++)
//{
// scanf("%d", &n);
// ListInsert(&L, i, n);//顺序表给第i个元素前插入元素
//}
ListInsert(&L, 2, (DataType)(68));
for (i = 0; i < ListLength(&L); i++)//返回顺序表L的当前元素个数
{
ListGet(&L, i, &y);//从顺序表中取元素,带回y
printf("%d ", y);
}
}
int main()
{
test();
return 0;
}
3.Function.c
顺序表函数具体实现
#include "SqList.h"
void ListInitiate(SqList* L)//初始化顺序表
{
for (int i = 0; i < MaxSize; i++)
{
L->list[i] = 0;
}
L->size = 0;
}
bool ListInsert(SqList* L, int i, DataType a)//顺序表给第i个元素前插入元素
{
if (i < 0 || i > L->size)
{
printf("参数i不合法!\n");
return false;
}
else if (L->size >= MaxSize)
{
printf("顺序表已满无法插入!\n");
return false;
}
else
{
for (int j = L->size; j > i; j--)
{
L->list[j] = L->list[j - 1];
}
L->list[i] = a;
L->size++;
return true;
}
}
int ListLength(SqList* L)//返回顺序表L的当前元素个数
{
return L->size;
}
bool ListGet(SqList* L, int i, DataType* y)
{
if (i < 0 || i >= L->size)
{
printf("参数i不合法!\n");
return false;
}
else
{
*y = L->list[i];
return true;
}
}