使用结构体和指针完成数据结构中线性表的基本操作(创建线性表、线性表赋值、销毁线性表、插入元素、删除元素、打印线性表)
时间: 2023-07-10 22:43:21 浏览: 140
好的,让我来解答你的问题。
首先,我们需要定义一个结构体来表示线性表:
```c
#define MAX_SIZE 100 // 线性表最大长度
typedef struct {
int data[MAX_SIZE]; // 存放线性表元素
int length; // 线性表长度
} List;
```
接下来,我们可以定义一些操作来操作这个线性表。
1. 创建线性表
```c
List* createList() {
List* list = (List*)malloc(sizeof(List));
list->length = 0;
return list;
}
```
2. 线性表赋值
```c
void assignList(List* list, int* arr, int n) {
if (n > MAX_SIZE) {
printf("数组长度超过线性表最大长度\n");
return;
}
for (int i = 0; i < n; i++) {
list->data[i] = arr[i];
}
list->length = n;
}
```
3. 销毁线性表
```c
void destroyList(List* list) {
free(list);
}
```
4. 插入元素
```c
void insert(List* list, int pos, int val) {
if (pos < 1 || pos > list->length + 1) {
printf("插入位置不合法\n");
return;
}
if (list->length >= MAX_SIZE) {
printf("线性表已满\n");
return;
}
for (int i = list->length; i >= pos; i--) {
list->data[i] = list->data[i - 1];
}
list->data[pos - 1] = val;
list->length++;
}
```
5. 删除元素
```c
void delete(List* list, int pos) {
if (pos < 1 || pos > list->length) {
printf("删除位置不合法\n");
return;
}
for (int i = pos; i < list->length; i++) {
list->data[i - 1] = list->data[i];
}
list->length--;
}
```
6. 打印线性表
```c
void printList(List* list) {
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
```
这样,我们就完成了线性表的基本操作。当然,在实际应用中,我们可能还需要添加一些其他的操作,例如查找元素、排序等。
阅读全文