C语言实现单链表逆置

0 下载量 84 浏览量 更新于2024-08-03 收藏 1KB TXT 举报
"该资源是关于使用C语言实现单链表逆置的代码示例。" 在计算机科学中,链表是一种线性数据结构,它由一系列节点组成,每个节点包含数据以及指向下一个节点的引用。单链表是链表的一种形式,其中每个节点只有一个指向下一个节点的指针。这个给定的C语言代码示例展示了如何创建一个单链表并将其逆置。 首先,定义了一个结构体`LinkNode`,用于表示链表中的节点。每个`LinkNode`包含两个成员:一个`int`类型的`data`字段存储数据,以及一个指向`LinkNode`类型的指针`next`,用于链接到下一个节点。 ```c typedefstruct Node { int data; struct Node* next; } LinkNode; ``` 接着,定义了一个名为`Create`的函数,用于创建指定长度的链表。这个函数接受一个`LinkNode`指针`L`和一个整数`n`作为参数,表示链表的长度。函数首先分配一个头节点,然后遍历`n`次,每次创建一个新的节点,并将其连接到链表尾部。 ```c LinkNode* Create(LinkNode* L, int n) { // ... for (int i = 0; i < n; i++) { p = (LinkNode*)malloc(sizeof(LinkNode)); p->data = i; p->next = NULL; tail->next = p; tail = p; } return L; } ``` `main`函数中,调用`Create`函数创建一个包含6个元素的链表,然后打印初始链表。接下来,调用`back`函数来逆置链表。`back`函数通过迭代方式实现链表的逆置,它使用三个指针`pre`、`p`和`q`,分别用于前一个节点、当前节点和下一个节点。在每次迭代中,`p`的`next`指针被设置为`pre`,然后`pre`和`p`向前移动一步,直到`q`达到链表末尾。最后,更新头节点`L`的`next`指针指向新的链表头部,即原链表的尾部。 ```c LinkNode* back(LinkNode* L) // 链表翻转 { if (L == NULL || L->next == NULL) { return L; } LinkNode* pre = NULL; LinkNode* p = L->next; LinkNode* q = L->next->next; while (q != NULL) { p->next = pre; pre = p; p = q; q = q->next; } p->next = pre; L->next = p; return L; } ``` 在`main`函数中,调用`back`函数后,再次打印链表,以展示逆置的效果。 链表逆置是链表操作中常见的问题,它在实际应用中有很多用途,例如数据结构的反转、算法的实现等。这个例子提供了一个简洁的C语言解决方案,可以帮助学习者理解链表的基本操作和逆置过程。