单项链表
时间: 2023-07-10 17:23:30 浏览: 99
单向链表是一种常见的线性数据结构,由节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。它的最后一个节点指向 NULL。
单向链表的优点是插入和删除操作比较高效,但访问操作需要从头节点开始遍历,效率较低。
以下是一个示例单向链表的结构体定义:
```c
typedef struct node {
int data;
struct node* next;
} Node;
```
其中,`data`表示节点存储的数据,`next`指向下一个节点的指针。在链表中,每个节点都是一个`Node`类型的结构体。
创建一个链表可以使用以下代码:
```c
Node* head = NULL; // 头节点指针初始化为空
Node* tail = NULL; // 尾节点指针初始化为空
// 创建第一个节点
Node* node1 = (Node*)malloc(sizeof(Node));
node1->data = 1;
node1->next = NULL;
// 将第一个节点作为头节点和尾节点
head = tail = node1;
// 创建第二个节点
Node* node2 = (Node*)malloc(sizeof(Node));
node2->data = 2;
node2->next = NULL;
// 将第二个节点插入到链表尾部
tail->next = node2;
tail = node2;
```
以上代码创建了一个包含两个节点的链表,其中头节点为`node1`,尾节点为`node2`。如果需要遍历链表并打印所有节点的数据,可以使用以下代码:
```c
Node* p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
```
以上代码从头节点开始遍历链表,依次打印每个节点的数据。
阅读全文