不带头节点的链表逆序算法


typedef struct Node {
 int nData ;                  //结点数据域
 struct Node * pNext ;//结点指针域
} TNode ,* LinkedList ;

 void Inverse ( LinkedList pList ){
//链表逆序算法
 LinkedList pCur = pList -> pNext ;
 pNxt = NULL ;
 pList -> pNext =________________
 while ( ____________){
 pNxt =______________
 pCur -> pNext =______________
 pList -> pNext = pCur ;
 pCur = pNxt ;
}
}

引用 皆我百晓生 小程序回复内容作答:

void Inverse (LinkedList pList){
    LinkedList pCur = pList->pNext;
    LinkedList pNxt = NULL;
    pList->pNext = NULL;
    
    while (pCur){
        pNxt = pCur->pNext;
        pCur->pNext = pList->pNext;
        pList->pNext = pCur;
        pCur = pNxt;
    }
}

【以下回答由 GPT 生成】

typedef struct Node {
    int nData;                  // 结点数据域
    struct Node* pNext;         // 结点指针域
} TNode, *LinkedList ;

void Inverse(LinkedList pList){
    // 链表逆序算法
    LinkedList pCur = pList->pNext;
    LinkedList pNxt = NULL;
    pList->pNext = NULL; // 将原链表的头节点指针域置为NULL

    while (pCur != NULL){
        pNxt = pCur->pNext;
        pCur->pNext = pList->pNext;
        pList->pNext = pCur;
        pCur = pNxt;
    }
}

在这个链表逆序算法中,我们使用了两个指针pCur和pNxt。首先,我们将pCur指针初始化为原链表的第一个节点,然后将pNxt指针置为NULL。接下来,我们将原链表的头节点的指针域置为NULL。然后,我们使用一个while循环遍历链表,直到pCur指针遍历到最后一个节点为止。在循环中,我们先将pNxt指针指向pCur节点的下一个节点,然后将pCur节点的指针域指向原链表的头节点的指针域,再将头节点的指针域指向pCur节点。最后,我们将pCur指针移动到pNxt指针指向的位置,继续循环直到遍历完整个链表。这样就完成了链表的逆序。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^