C语言编译循环链表
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
struct Node {
int data;
struct Node* next;
};
// 创建循环链表
struct Node* createCircularLinkedList(int n) {
struct Node* head = NULL;
struct Node* temp = NULL;
struct Node* ptr = NULL;
int i;
for(i=0; i<n; i++) {
// 为节点分配内存空间
temp = (struct Node*)malloc(sizeof(struct Node));
printf("输入节点%d的数据:", i+1);
scanf("%d", &temp->data);
temp->next = NULL;
if(head == NULL) {
// 如果是第一个节点
head = temp;
ptr = temp;
} else {
// 如果不是第一个节点,则将新节点连接到头节点
ptr->next = temp;
ptr = temp;
}
}
// 最后将最后一个节点的next指向头节点,形成循环
ptr->next = head;
return head;
}
// 遍历循环链表
void displayCircularLinkedList(struct Node* head) {
struct Node* current = head;
if(head == NULL) {
printf("链表为空!");
return;
}
do {
printf("%d -> ", current->data);
current = current->next;
} while(current != head);
printf("循环链表尾节点的next指向了头节点");
}
int main() {
int n;
struct Node* head = NULL;
printf("输入链表中节点的数量:");
scanf("%d", &n);
head = createCircularLinkedList(n);
printf("循环链表为:\n");
displayCircularLinkedList(head);
return 0;
}
使用这段代码,你可以在运行时输入节点数和节点数据,来创建和展示一个循环链表。请注意,在创建循环链表时,我们通过将最后一个节点的next指针指向头节点来实现循环的连接。在遍历循环链表时,我们使用了do-while循环,确保至少执行一次以遍历所有节点。
原文地址:https://blog.csdn.net/caoxinri123/article/details/136805188
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!