c使用类模板实现list
时间: 2023-08-23 17:02:08 浏览: 113
C语言不支持类模板的概念,但可以通过结构体和指针来实现一个类似于list的数据结构。
首先,我们可以定义一个包含数据和指向下一个节点的指针的结构体,例如:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
然后,我们可以定义一个包含头指针和尾指针的结构体来表示这个list,例如:
```c
typedef struct List {
Node* head;
Node* tail;
} List;
```
接下来,我们可以实现一些常见的操作,例如创建list、添加元素、删除元素等等。下面是一些示例代码:
```c
void initList(List* list) {
list->head = NULL;
list->tail = NULL;
}
void addElement(List* list, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (list->head == NULL) {
list->head = newNode;
list->tail = newNode;
} else {
list->tail->next = newNode;
list->tail = newNode;
}
}
void deleteElement(List* list, int data) {
Node* current = list->head;
Node* previous = NULL;
while (current != NULL) {
if (current->data == data) {
if (previous == NULL) {
list->head = current->next;
} else {
previous->next = current->next;
}
// 如果删除的是尾节点,更新tail指针
if (current == list->tail) {
list->tail = previous;
}
free(current);
return;
}
previous = current;
current = current->next;
}
}
```
通过以上代码,我们可以使用类似于list的数据结构来存储和操作元素。虽然这并不是真正意义上的类模板,但可以达到类似的效果。
阅读全文