用C++写一个多功能链表类
时间: 2023-05-20 11:03:06 浏览: 103
非常感谢您的提问!以下是一个用C语言实现的多功能链表类的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct LinkedList {
Node* head;
int size;
} LinkedList;
void init(LinkedList* list) {
list->head = NULL;
list->size = 0;
}
void add(LinkedList* list, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (list->head == NULL) {
list->head = newNode;
} else {
Node* current = list->head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
list->size++;
}
void removeAt(LinkedList* list, int index) {
if (index < 0 || index >= list->size) {
printf("Index out of bounds!\n");
return;
}
Node* current = list->head;
if (index == 0) {
list->head = current->next;
free(current);
} else {
Node* previous = NULL;
for (int i = 0; i < index; i++) {
previous = current;
current = current->next;
}
previous->next = current->next;
free(current);
}
list->size--;
}
void printList(LinkedList* list) {
Node* current = list->head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
LinkedList list;
init(&list);
add(&list, 1);
add(&list, 2);
add(&list, 3);
add(&list, 4);
add(&list, 5);
printList(&list);
removeAt(&list, 2);
printList(&list);
return 0;
}
```
这个链表类包含了初始化、添加、删除和打印链表的功能。您可以根据自己的需要进行修改和扩展。希望对您有所帮助!