在C语言中,链表是一种线性数据结构,由一系列节点组成。每个节点包含两部分:数据域(data)和指针域(next)。数据域用于存储具体的数据,而指针域用于存储指向下一个节点的地址。链表的大小不需要预定义,插入和删除操作高效,非常适合动态存储场景。
```c
struct Node {
int data; // 数据域,存储具体数据
struct Node* next; // 指针域,存储指向下一个节点的地址
};
```
或者,可以使用`typedef`对结构体类型进行重命名,以便更方便地使用:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接下来,可以定义链表的基本操作,例如创建链表、插入节点和删除节点等。
创建链表的示例代码:
```c
Node* createLinkedList(int *data, int len) {
Node *head = NULL, *tail = NULL;
for (int i = 0; i < len; i++) {
Node *node = (Node *)malloc(sizeof(Node));
node->data = data[i];
node->next = NULL;
if (tail != NULL) {
tail->next = node;
}
tail = node;
if (head == NULL) {
head = node;
}
}
return head;
}
```
遍历链表的示例代码:
```c
void traverseLinkedList(Node *head) {
Node *current = head;
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("NULL\n");
}
```
在使用链表时,需要注意动态分配的内存需要在适当的时候释放,以避免内存泄漏。