C语言数据结构顺序表中的增删改(尾插尾删)教程示例详解
什么是顺序表
顺序表是一种线性表,它通过一块连续的存储空间来存储数据。顺序表中的数据元素排列在物理存储空间上也是连续的,每个元素占用一个固定的位置和大小,并且使用下标来访问。
顺序表的定义
下面是以int类型为例的一个简单顺序表的定义:
#define SIZE 50
typedef struct {
int data[SIZE];
int length;
} SeqList;
其中data表示存储元素的数组,length表示当前顺序表中的元素个数。
尾插操作
尾插操作是将新元素添加到顺序表的末尾。下面是一个示例代码:
int append(SeqList *L, int x) {
// 判断顺序表是否已满
if (L->length >= SIZE) {
return 0;
}
// 将新元素添加到末尾
L->data[L->length] = x;
L->length++;
return 1;
}
该函数接收两个参数,第一个参数L是需要操作的顺序表,第二个参数x是需要添加的新元素。函数中先判断顺序表是否已满,如果已满,则返回0,表示添加失败。如果未满,则将新元素添加到顺序表末尾,并更新顺序表的长度。添加成功后,函数返回1。
尾删操作
尾删操作是将顺序表中的最后一个元素移除。下面是一个示例代码:
int del(SeqList *L) {
if (L->length == 0) {
return 0;
}
L->length--;
return 1;
}
该函数接收一个参数L,表示需要操作的顺序表。函数中先判断顺序表是否为空,如果为空,则返回0,表示删除失败。如果不为空,则将顺序表的长度减1,以移除最后一个元素。删除成功后,函数返回1。
示例说明
示例1
假设现在有一个空的顺序表L,对其进行多次尾插操作,添加新元素1、2、3、4和5,然后进行多次尾删操作。下面是示例代码:
int main() {
SeqList L;
L.length = 0;
append(&L, 1);
append(&L, 2);
append(&L, 3);
append(&L, 4);
append(&L, 5);
while (del(&L)) {
printf("删除成功\n");
}
return 0;
}
首先创建一个空的顺序表L,并通过append函数依次添加元素1、2、3、4和5。然后进行多次尾删操作,直到顺序表L为空。
示例2
假设现在有一个顺序表L,其中包含元素1、2、3、4和5,请将2和4删除。下面是示例代码:
int main() {
SeqList L;
L.length = 5;
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.data[3] = 4;
L.data[4] = 5;
int i, j = 0;
for (i = 0; i < L.length; i++) {
if (L.data[i] != 2 && L.data[i] != 4) {
L.data[j] = L.data[i];
j++;
}
}
L.length = j;
return 0;
}
首先创建一个包含元素1、2、3、4和5的顺序表L,然后使用循环遍历整个顺序表,将不等于2且不等于4的元素放到新的位置上,并记录新的长度。最后更新顺序表的长度,并且2和4就被移除了,顺序表中只剩下了1、3和5。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言数据结构顺序表中的增删改(尾插尾删)教程示例详解 - Python技术站