详解C语言之顺序表

一、思维导图

顺序表

二、步骤

1.初始化

代码如下:

void ListInit(SeqList *L)

{

L->size = 0;

}

2.求表长

代码如下:

int ListLength(SeqList L)

{

return L.size;

}

3.插入数据元素

代码如下:

int ListInsert(SeqList *L, int i, DataType x)

{

int j;

if (L->size >= MaxSize)

{

printf("顺序表已满,插入失败!!!\n");

return 0;

}

else if (i<0 || i>L->size)

{

printf("参数i不合法,插入失败!!!\n");

return 0;

}

else

{

for (j = L->size; j > i; j--)

L->list[j] = L->list[j - 1];

L->list[i] = x;

L->size++;

return 1;

}

}

4.删除数据元素

代码如下:

int ListInsert(SeqList *L, int i, DataType x)

{

int j;

if (L->size >= MaxSize)

{

printf("顺序表已满,插入失败!!!\n");

return 0;

}

else if (i<0 || i>L->size)

{

printf("参数i不合法,插入失败!!!\n");

return 0;

}

else

{

for (j = L->size; j > i; j--)

L->list[j] = L->list[j - 1];

L->list[i] = x;

L->size++;

return 1;

}

}

5.取出数据元素

按位查找

代码如下:

int ListGet(SeqList L, int i, DataType *x)

{

if (L.size <= 0)

{

printf("顺序表已空,取出元素失败!!!\n");

return 0;

}

else if (i < 0 || i >= L.size)

{

printf("参数i不合法,取出元素失败!!!\n");

return 0;

}

else

{

*x = L.list[i];

return 1;

}

}

按位查找

代码如下:

int ListGetZ(SeqList L, DataType x, int *i)

{

int j;

for (j = 0; j < ListLength(L); j++)

{

if (L.list[j] == x)

{

*i = j;

return 1;

}

}

return 0;

}

所有代码

#include <stdio.h>

#define MaxSize 1024 //数组能存储的最大最大元素个数

typedef int DataType; //存储数据元素的数据类型

typedef struct

{

DataType list[MaxSize];

int size; //当前存储的数据元素个数

}SeqList;

//初始化

void ListInit(SeqList *L)

{

L->size = 0;

}

//求表长

int ListLength(SeqList L)

{

return L.size;

}

//插入数据元素

int ListInsert(SeqList *L, int i, DataType x)

{

int j;

if (L->size >= MaxSize)

{

printf("顺序表已满,插入失败!!!\n");

return 0;

}

else if (i<0 || i>L->size)

{

printf("参数i不合法,插入失败!!!\n");

return 0;

}

else

{

for (j = L->size; j > i; j--)

L->list[j] = L->list[j - 1];

L->list[i] = x;

L->size++;

return 1;

}

}

//删除数据元素

int ListDelete(SeqList *L, int i, DataType *x)

{

int j;

if (L->size <= 0)

{

printf("顺序表已空,删除失败!!!\n");

return 0;

}

else if (i < 0 || i >= L->size)

{

printf("参数i不合法,删除失败!!!\n");

return 0;

}

else

{

*x = L->list[i];

for (j = i; j < L->size - 1; j++)

L->list[j] = L->list[j + 1];

L->size--;

return 1;

}

}

//取出数据元素

//按位查找

void ListGet(SeqList L, int i, DataType *x)

{

if (L.size <= 0)

{

printf("顺序表已空,取出元素失败!!!\n");

return 0;

}

else if (i < 0 || i >= L.size)

{

printf("参数i不合法,取出元素失败!!!\n");

return 0;

}

else

{

*x = L.list[i];

return 1;

}

}

//安值查找

int ListGetZ(SeqList L, DataType x, int *i)

{

int j;

for (j = 0; j < ListLength(L); j++)

{

if (L.list[j] == x)

{

*i = j;

return 1;

}

}

return 0;

}

int main()

{

SeqList L;

int i, x;

ListInit(&L);

for (i = 0; i < 10; i++)

ListInsert(&L, i, i + 10);

ListDelete(&L, 4, &x);

for (i = 0; i < ListLength(L); i++)

{

ListGet(L, i, &x);

printf("%d ", x);

}

system("pause");

return 0;

}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

以上是 详解C语言之顺序表 的全部内容, 来源链接: utcz.com/p/247660.html

回到顶部