用C语言创建具有n个结点的带头单循环链表
时间: 2024-09-22 14:05:50 浏览: 57
在C语言中,我们可以使用结构体来创建一个带头单循环链表,这种链表有一个额外的节点作为头结点,并且最后一个节点的next指针指向第一个节点,形成一个环形。以下是创建一个具有n个节点的基本步骤:
1. 定义链表节点结构体:
```c
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
```
2. 创建头结点:
```c
Node* head = (Node*)malloc(sizeof(Node)); // 分配空间并初始化头结点
head->data = 0; // 初始化头结点的数据
head->next = head; // 将头结点的next指针指向自身形成循环链表
```
3. 添加n个数据节点:
```c
void addNode(Node** head, int n) {
for (int i = 1; i <= n; i++) { // 从第二个节点开始添加
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = i; // 设置节点值
newNode->next = (*head)->next; // 新节点的next指向前一个节点
(*head)->next = newNode; // 更新前一个节点的next指针
if (i == n) { // 如果这是最后一个节点,也需要指向头节点
newNode->next = head;
}
}
}
```
4. 使用链表:
```c
// 示例用法
int main() {
int n = 5; // 假设你想创建5个节点
addNode(&head, n);
// 遍历链表
Node* current = head;
while (current != NULL) {
printf("%d ", current->data); // 输出节点值
current = current->next;
}
return 0;
}
```
阅读全文