void show(struct Node *r);//show data 其中r是指针,指向无附加表头的循环单链表的最后一个结点。c语言链表实现
时间: 2024-02-28 18:57:00 浏览: 71
这段代码是一个函数声明,声明了一个名为show的函数,该函数接受一个指向结构体Node类型的指针参数r,并且没有返回值。该函数的功能是展示循环单链表中存储的数据。
在C语言中,可以使用结构体来定义一个链表节点,结构体中包含一个数据域和一个指向下一个节点的指针域。循环单链表中最后一个节点的指针域指向头节点,形成一个环形结构。
下面是一个简单的C语言链表实现的例子,实现了节点的创建、插入、删除和展示等基本操作:
```
#include <stdio.h>
#include <stdlib.h>
//定义链表节点结构体
struct Node {
int data;
struct Node *next;
};
//创建新节点
struct Node *createNode(int data) {
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
//在链表的末尾插入新节点
void insertNode(struct Node *r, int data) {
struct Node *newNode = createNode(data);
newNode->next = r->next;
r->next = newNode;
}
//删除指定节点
void deleteNode(struct Node *r, struct Node *node) {
struct Node *p = r->next;
while (p != r) {
if (p->next == node) {
p->next = node->next;
free(node);
return;
}
p = p->next;
}
}
//展示链表中存储的数据
void show(struct Node *r) {
struct Node *p = r->next;
while (p != r) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
//创建一个带有附加头节点的循环单链表
struct Node *head = createNode(0);
head->next = head;
//在链表中插入节点并展示
insertNode(head, 1);
insertNode(head, 2);
insertNode(head, 3);
show(head);
//删除节点并展示
deleteNode(head, head->next->next);
show(head);
return 0;
}
```
阅读全文