C++ 中,列表的增删改查
时间: 2023-03-21 10:04:02 浏览: 85
用户列表的增删改查
在C语言中,没有内置的列表数据结构,但可以使用数组或链表等数据结构来实现列表。下面是对于数组和链表的增删改查操作的示例:
### 数组
#### 增加元素
```c
#define MAX_SIZE 100
int list[MAX_SIZE]; // 定义一个长度为MAX_SIZE的数组作为列表
int length = 0; // 记录列表当前长度
// 在列表末尾添加一个元素
void add(int item) {
if (length < MAX_SIZE) {
list[length++] = item;
}
}
```
#### 删除元素
```c
// 从列表中删除指定位置的元素
void removeAt(int index) {
if (index >= 0 && index < length) {
for (int i = index; i < length - 1; i++) {
list[i] = list[i + 1];
}
length--;
}
}
// 从列表中删除指定元素
void removeItem(int item) {
for (int i = 0; i < length; i++) {
if (list[i] == item) {
removeAt(i);
break;
}
}
}
```
#### 修改元素
```c
// 修改指定位置的元素
void set(int index, int item) {
if (index >= 0 && index < length) {
list[index] = item;
}
}
```
#### 查找元素
```c
// 查找指定元素在列表中的位置
int indexOf(int item) {
for (int i = 0; i < length; i++) {
if (list[i] == item) {
return i;
}
}
return -1; // 如果列表中不存在指定元素,则返回-1
}
```
### 链表
#### 定义节点
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
#### 增加元素
```c
Node* head = NULL; // 定义链表头节点
// 在链表末尾添加一个元素
void add(int item) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = item;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
```
#### 删除元素
```c
// 从链表中删除指定位置的元素
void removeAt(int index) {
if (index == 0) {
Node* temp = head;
head = head->next;
free(temp);
} else {
Node* prev = head;
for (int i = 0; i < index - 1; i++) {
prev = prev->next;
}
Node* current = prev->next;
prev->next = current->next;
free(current);
}
}
// 从链表中删除指定元素
void removeItem(int item) {
if (head == NULL) {
return;
}
if (head->data == item) {
Node* temp = head;
head = head->next;
free(temp);
} else {
Node
阅读全文