用c语言编写程序,实现顺序表的创建、插入和删除等基本操作算法
时间: 2024-06-16 12:07:47 浏览: 132
当用C语言编写程序实现顺序表的创建、插入和删除等基本操作算法时,可以按照以下步骤进行:
1. 创建顺序表:
- 首先,定义一个结构体来表示顺序表,结构体中包含一个数组和一个表示当前元素个数的变量。
- 使用malloc函数动态分配内存空间来创建顺序表,并初始化当前元素个数为0。
2. 插入元素:
- 首先,判断顺序表是否已满,如果已满则需要进行扩容操作。
- 然后,在指定位置插入元素时,需要将插入位置之后的元素依次后移一位。
- 最后,将要插入的元素放入指定位置,并更新当前元素个数。
3. 删除元素:
- 首先,判断顺序表是否为空,如果为空则无法删除元素。
- 然后,在指定位置删除元素时,需要将删除位置之后的元素依次前移一位。
- 最后,更新当前元素个数。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 创建顺序表
SeqList* createSeqList() {
SeqList* list = (SeqList*)malloc(sizeof(SeqList));
list->length = 0;
return list;
}
// 插入元素
void insertElement(SeqList* list, int position, int element) {
if (list->length >= MAX_SIZE) {
printf("顺序表已满,无法插入元素!\n");
return;
}
if (position < 0 || position > list->length) {
printf("插入位置不合法!\n");
return;
}
for (int i = list->length - 1; i >= position; i--) {
list->data[i + 1] = list->data[i];
}
list->data[position] = element;
list->length++;
}
// 删除元素
void deleteElement(SeqList* list, int position) {
if (list->length == 0) {
printf("顺序表为空,无法删除元素!\n");
return;
}
if (position < 0 || position >= list->length) {
printf("删除位置不合法!\n");
return;
}
for (int i = position; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
int main() {
SeqList* list = createSeqList();
insertElement(list, 0, 1);
insertElement(list, 1, 2);
insertElement(list, 2, 3);
deleteElement(list, 1);
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
free(list);
return 0;
}
```
阅读全文