c语言链表
时间: 2023-06-21 16:07:15 浏览: 73
c语言实现链表的基本操作,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表是一种常见的数据结构,它可以存储一组元素,并且可以动态地增加或删除元素。在 C 语言中,链表可以通过结构体和指针来实现。
下面是一个简单的链表结构体定义:
```
typedef struct node {
int data;
struct node* next;
} Node;
```
该结构体包含了两个成员:data 和 next。其中,data 用来存储节点的数据,next 是一个指针,指向下一个节点。
接下来,我们可以定义一个指向链表头节点的指针,称为 head。初始时,head 可以设置为 NULL,表示链表为空。
```
Node* head = NULL;
```
接着,我们可以编写一些函数来操作链表,例如插入节点、删除节点和遍历链表等。
下面是一个简单的插入节点函数:
```
void insert(Node** head, int data) {
Node* new_node = (Node*) malloc(sizeof(Node));
new_node->data = data;
new_node->next = NULL;
if (*head == NULL) {
*head = new_node;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = new_node;
}
}
```
该函数接受一个指向链表头节点的指针和要插入的数据作为参数。首先,它创建一个新的节点,并将数据存储在其中。然后,它判断链表是否为空。如果是空链表,直接将新节点设置为头节点,否则遍历链表,找到最后一个节点,将新节点插入到其后面。
下面是一个简单的遍历链表函数:
```
void print_list(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
```
该函数接受一个指向链表头节点的指针作为参数。它从头节点开始遍历链表,并打印每个节点的数据。
最后,我们可以在主函数中调用这些函数来操作链表:
```
int main() {
insert(&head, 1);
insert(&head, 2);
insert(&head, 3);
print_list(head);
return 0;
}
```
这段代码会创建一个包含三个节点的链表,并打印每个节点的数据。
阅读全文