//带头结点的单链表,学习之用#include <iostream>#include <string>using namespace std;struct Node...{ string name; int age; Node* next;};typedef Node* LinkList;LinkList initList()//建立头结点...{ LinkList h=new Node; h->next=NULL; return h;}LinkList createListQueue(int n)//建立队列链表...{ LinkList h,q,p; h=initList(); q=h; for(int i=0;i<n;i++) ...{ p=new Node; cin >> p->name >> p->age; q->next=p; q=p; } q->next=NULL; return h;}void prtList(LinkList h)//输出链表...{ LinkList p; p=h->next; while(p!=NULL) ...{ cout << p->name << " " << p->age << endl; p=p->next; }}LinkList createListStack(int n)//建立栈链表...{ LinkList h,p,q; h=initList(); q=h->next; for(int i=0;i<n;i++) ...{ p=new Node; cin >> p->name >> p->age; h->next =p; p->next =q; q=p; } return h;}bool emptyList(LinkList h)//判断链表空...{ return h==h->next;}LinkList searchIndex(LinkList h, int i)//查找第i个结点...{ int k=1; LinkList p; p=h->next; while( k != i && p != NULL) ...{ p=p->next; k++; } if (k==i) return p; else return NULL;}void insertList(LinkList h, Node t, int i)//在第i个位置插入结点t...{ LinkList p,q,s; if (i==1 || emptyList(h)==true) ...{ p=h; } else ...{ p=searchIndex(h, i-1); if (p==NULL) return; } s=new Node; *s=t; q=p->next; s->next=q; p->next=s;}void deleteList(LinkList h, int n, int i)//删除第i个结点,n为结点总数...{ LinkList p,q; if (i<1 || i>n || emptyList(h)==true) return; if (i==1) ...{ p=h; } else ...{ p=searchIndex(h,i-1); } q=p->next; p->next=q->next; if (q!=NULL) delete q; }void reverseList(LinkList h)//逆置链表...{ if (emptyList(h)==true) return; LinkList p=h->next, q=p->next; p->next=NULL; while(q != NULL) ...{ p=q->next; q->next=h->next; h->next=q; q=p; }}void run()...{ int n; cin>>n; //假冒的链表逆置 LinkList h=createListStack(n); prtList(h); //真的链表逆置 /**//*LinkList h=createListQueue(n); reverseList(h); prtList(h); */ //链表的第k个位置插入一个结点 /**//*LinkList h=createListQueue(n); prtList(h); cout << endl; Node t; cin>>t.name>>t.age; int k; cin>>k; insertList(h, t, k); prtList(h); */ //链表中删除第k个结点 /**//*LinkList h=createListQueue(n); prtList(h); cout << endl; int k; cin>>k; deleteList(h, n, k); prtList(h);*/}int main()...{ int total; cin>>total; for(int now=1; now<=total; now++) run(); return 0;}