使用C语言编程实现1. 定义单向循环链表节点类型。 2..尾插法创建单向循环链表并返回尾指针。 3.定义打印输出单向循环链表节点。 4. 在main函数中编写测试
时间: 2024-09-25 12:05:16 浏览: 35
在C语言中,我们可以按照以下步骤实现单向循环链表:
1. **定义单向循环链表节点类型**:
```c
typedef struct Node {
int data; // 节点存储的数据
struct Node* next; // 指向下一个节点的指针,如果是循环链表,则next指向自身
} Node;
```
2. **尾插法创建单向循环链表** (使用指针操作):
```c
Node* createCircularList(int arr[], int n) {
Node* head = NULL;
Node* tail = NULL;
for (int i = 0; i < n; i++) {
if (!head) {
head = tail = new Node();
head->data = arr[i];
head->next = head; // 初始化头节点的next指针到头节点本身,形成循环
} else {
Node* newNode = new Node();
newNode->data = arr[i];
tail->next = newNode;
newNode->next = head; // 新增节点的next指向前一个节点,然后更新tail
tail = newNode;
}
}
return head;
}
```
3. **定义打印输出单向循环链表节点**:
```c
void printCircularList(Node* node) {
if (node == NULL) {
printf("链表为空\n");
return;
}
Node* temp = node;
do {
printf("%d ", temp->data);
temp = temp->next;
} while (temp != node); // 循环直到回到起点
}
```
4. **在main函数中编写测试**:
```c
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
Node* listHead = createCircularList(arr, n);
if (listHead) {
printf("单向循环链表:\n");
printCircularList(listHead);
} else {
printf("链表创建失败\n");
}
// 清理内存
delete listHead;
return 0;
}
```
阅读全文