C语言无头结点单循环链表结构定义代码
时间: 2024-12-12 17:24:06 浏览: 13
在C语言中,如果要实现一个无头结点的单循环链表(也称为环形链表),通常会直接从第一个节点开始存储数据,因为环形链表不需要额外的头结点来表示链表的起点。下面是一个简单的结构体定义示例:
```c
// 定义链表节点结构
typedef struct Node {
int data; // 节点的数据域
struct Node* next; // 指向下一个节点的指针,形成循环
} Node;
// 创建链表的函数
void createCircularList(Node** head, int arr[], int size) {
if (*head != NULL) return; // 如果链表已存在,则不做操作
*head = (Node*)malloc(sizeof(Node)); // 创建第一个节点
if (*head == NULL) {
printf("Memory allocation failed.\n");
return;
}
(*head)->data = arr[0]; // 设置第一个节点的数据
(*head)->next = *head; // 链接第一个节点到自身形成循环
for (int i = 1; i < size; i++) { // 继续创建剩余节点并连接它们
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
break;
}
newNode->data = arr[i];
newNode->next = (*head)->next; // 新节点指向下一个节点
(*head)->next = newNode; // 上一个节点的next指向新节点
}
}
```
在这个例子中,`Node` 结构包含了一个整型数据成员 `data` 和一个指向下一个节点的指针 `next`。`createCircularList` 函数用于初始化这个环形链表。
阅读全文