用C++定义一个类来实现单链表
时间: 2023-05-21 12:05:04 浏览: 111
非常感谢您的问题!以下是使用 C 语言定义一个单链表的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
// 定义单链表的节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 定义单链表类
typedef struct LinkedList {
Node* head;
int size;
// 初始化方法
void (*init)(struct LinkedList* self) {
self->head = NULL;
self->size = 0;
}
// 插入元素方法
void (*insert)(struct LinkedList* self, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = self->head;
self->head = newNode;
self->size++;
}
// 删除元素方法
int (*remove)(struct LinkedList* self, int data) {
Node* curNode = self->head;
Node* prevNode = NULL;
while (curNode != NULL) {
if (curNode->data == data) {
if (prevNode == NULL) {
self->head = curNode->next;
} else {
prevNode->next = curNode->next;
}
free(curNode);
self->size--;
return 1;
}
prevNode = curNode;
curNode = curNode->next;
}
return 0;
}
} LinkedList;
// 示例程序
int main() {
LinkedList list;
list.init(&list);
// 插入数据
list.insert(&list, 1);
list.insert(&list, 2);
list.insert(&list, 3);
// 输出数据
printf("size: %d\n", list.size);
Node* curNode = list.head;
while (curNode != NULL) {
printf("%d ", curNode->data);
curNode = curNode->next;
}
printf("\n");
// 删除数据
list.remove(&list, 2);
// 输出数据
printf("size: %d\n", list.size);
curNode = list.head;
while (curNode != NULL) {
printf("%d ", curNode->data);
curNode = curNode->next;
}
printf("\n");
return 0;
}
```
希望这个示例代码能够帮助您实现单链表的功能,如果您有任何问题,请随时提出。
阅读全文