#include //cout,cin using namespace std; #include "LinkList.h" //算法2.25 单链表逆置 void ReverseLinkList(LNode*& L) { LNode* p, * q; // 1.设置工作指针 p = L->next; // 原链表头结点,作为逆置后表的头结点 L->next = NULL; while (p) // 2. 依次摘除原链表结点,以头插法插入到逆置链表中 { q = p; // 2.1 q取当前结点位置 p = p->next; // 2.2 p指向下一个待处理结点 q->next = L->next; // 2.3 将q 插入到头结点之后 L->next = q; } } void dispmenu() {//显示主菜单 cout << endl; cout << "1-创建单链表\n"; cout << "2-逆置单链表\n"; cout << "3-显示单链表\n"; cout << "4-退出\n"; } char pause; //主函数 int main() { int n; //int e; LNode* L; system("cls"); // 执行系统命令cls,清屏 int choice; do { dispmenu(); // 显示主菜单 cout << "Enter choice(1~4):"; cin >> choice; switch (choice) { case 1: // 创建单链表 InitList(L); cout << "输入要创建元素个数:"; cin >> n; cout << endl; CreateList_1(L, n); cout << "创建的单链表为:"; DispList(L); cout << endl; break; case 2: // 逆置单链表 ReverseLinkList(L); cout << "逆置后的单链表为:"; DispList(L); cout << endl; break; case 3: // 显示表 DispList(L); cout << endl; cin.get(pause); system("pause"); break; case 4: // 退出 DestroyList(L); cout << "结束运行" << endl; break; default: // 无效选择 cout << "Invalid choice\n"; break; } } while (choice != 4); return 0; }//end of main function