单链表反转

    xiaoxiao2025-06-08  21

    伪代码实现:

    struct LinkNode *pPrve = NULL; struct LinkNode *pCurrent = pHeader->next; struct LinkNode *pPrve = NULL; while (pCurrent != NULL) { pNext = pCurrent->next; pCurrent->next = pPrve; pPrve = pCurrent; pCurrent = pNext; } pHeader->next = pPrve;

    具体代码实现:

    #include<iostream> using namespace std; struct Node { int n; Node *pNext; }; class List { public: Node* CreateList(int n); void PrintList(); void Reverse(Node* pHead); //链表反转 private: Node *pHead;//头指针 }; //尾插法 Node* List::CreateList(int n) { Node *pb, *pc; pHead = new Node; //pHead结点为头结点 pc = pHead; int i = 0; while (i<n) { pb = new Node; cout << "请输入第" << i + 1 << "个结点的数据"; cin >> pb->n; pc->pNext = pb; pc = pb; pc->pNext = NULL; i++; } return pHead; } void List::PrintList() { Node *Pa = pHead; while (Pa->pNext != NULL) { cout << Pa->pNext->n << endl; Pa = Pa->pNext; } } void List::Reverse(Node* pHead) { Node* pCurrent = pHead->pNext; Node* pPrve = NULL; Node* pNnext = NULL; while(pCurrent!=NULL) { pNnext = pCurrent->pNext; pCurrent->pNext = pPrve; pPrve = pCurrent; pCurrent = pNnext; } pHead->pNext = pPrve; } int main() { List m; int n; cout << "请输入创建结点的个数"; cin >> n; Node* pHead = m.CreateList(n); m.PrintList(); cout<<"反转后的链表为"<<endl; m.Reverse(pHead); m.PrintList(); return 0; }

    参考链接:https://www.iqiyi.com/v_19rr1zqiy0.html

    最新回复(0)