链表class 实现链表、c++
时间: 2024-02-02 20:01:55 浏览: 84
链表(Linked List)是一种常见的数据结构,通过节点将元素按顺序连接起来。链表的每个节点包含数据部分和指向下一个节点的指针。
在C语言中,我们可以使用结构体来定义一个链表节点,并使用指针来表示不同节点的连接关系。
首先,我们定义一个链表节点的结构体:
```c
typedef struct Node {
int data; // 数据部分
struct Node* next; // 指向下一个节点的指针
} Node;
```
接着,我们可以定义一个链表的结构体,存储链表的头节点和尾节点:
```c
typedef struct LinkedList {
Node* head; // 链表的头节点
Node* tail; // 链表的尾节点
} LinkedList;
```
链表的实现包括一系列操作,比如插入、删除、查找等。
插入操作:在链表的指定位置插入一个新的节点:
```c
void insert(LinkedList* list, int position, int data) {
// 创建新的节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
// 插入到链表中
if (position == 0) {
// 插入到链表的头部
newNode->next = list->head;
list->head = newNode;
} else {
// 插入到指定位置
Node* currentNode = list->head;
for (int i = 0; i < position - 1 && currentNode != NULL; i++) {
currentNode = currentNode->next;
}
if (currentNode != NULL) {
newNode->next = currentNode->next;
currentNode->next = newNode;
}
}
}
```
删除操作:删除链表中指定位置的节点:
```c
void remove(LinkedList* list, int position) {
// 删除链表中的节点
if (position == 0) {
Node* currentNode = list->head;
list->head = currentNode->next;
free(currentNode);
} else {
Node* currentNode = list->head;
Node* previousNode = NULL;
for (int i = 0; i < position && currentNode != NULL; i++) {
previousNode = currentNode;
currentNode = currentNode->next;
}
if (currentNode != NULL) {
previousNode->next = currentNode->next;
free(currentNode);
}
}
}
```
查找操作:根据节点的值查找节点所在位置:
```c
int search(LinkedList* list, int data) {
int position = 0;
Node* currentNode = list->head;
while (currentNode != NULL) {
if (currentNode->data == data) {
return position;
}
position++;
currentNode = currentNode->next;
}
return -1; // 表示未找到
}
```
以上是链表的一些基本操作示例,通过结构体和指针,我们可以很方便地实现一个链表的类(class)来进行链表操作。
阅读全文