单面循环程序可以使用多种编程语言实现,这里我将提供一个使用C++编写的单面循环链表的示例代码。这个示例包括创建链表、插入元素、遍历链表和打印链表的功能。
```cpp
include
// 定义链表节点结构
struct Node {
int data; // 节点数据
Node *next; // 指向下一个节点的指针
};
// 创建新节点
Node *createNode(int data) {
Node *newNode = new Node();
if (newNode) {
newNode->data = data;
newNode->next = nullptr;
}
return newNode;
}
// 初始化链表
Node *initList() {
Node *head = createNode(0); // 创建头节点,数据为0
if (head) {
head->next = head; // 头节点的next指向自己,形成循环
}
return head;
}
// 头插
void insertHead(Node *head, int data) {
Node *newNode = createNode(data);
if (newNode) {
newNode->next = head->next;
head->next = newNode;
}
}
// 遍历整个链表
void travel(Node *head) {
if (is_empty(head)) {
std::cout << "链表为空" << std::endl;
return;
}
Node *cur = head;
do {
std::cout << cur->data << "\t";
cur = cur->next;
} while (cur != head);
std::cout << std::endl;
}
// 链表是否为空
bool is_empty(Node *head) {
return head == nullptr;
}
// 链表长度
int length(Node *head) {
if (is_empty(head)) {
return 0;
}
int length = 1;
Node *cur = head;
while (cur->next != head) {
length++;
cur = cur->next;
}
return length;
}
int main() {
Node *clink = initList(); // 初始化链表
insertTail(clink, 300); // 在链表尾部插入元素300
travel(clink); // 遍历并打印链表
return 0;
}
```
代码说明:
Node结构体:
定义了链表节点的数据结构,包括数据和指向下一个节点的指针。
createNode函数:
用于创建新节点并初始化其数据和指针。
initList函数:
初始化链表,创建头节点并将其next指针指向自己,形成循环。
insertHead函数:
在链表头部插入新节点。
travel函数:
遍历链表并打印每个节点的数据。
is_empty函数:
检查链表是否为空。
length函数:
计算链表的长度。
main函数:
程序入口,初始化链表,插入元素,遍历并打印链表。
这个示例展示了如何创建和操作一个单面循环链表。你可以根据需要修改和扩展这个代码,例如添加删除节点、查找节点等功能。