建单链表,并顺序输出

将n个名字(每个名字不超过10个字符--可英文单词表示)建立成一个单链表,节点中包含名字、原(输入时的)序号、指向下一个节点的指针。然后将这些名字按字典顺序排序。要求:(1)将原名单按行输出:名字、序号(2)按排序后的名单顺序输出,包括:名字、原序号


#include "stdafx.h"
 
#include <iostream>
using namespace std;
 
struct List
{
    int num;
    List *next;
};
 
List *createList(int n)       //创建含有n个节点的单链表
{
    List *head, *p, *q;
    q=head = NULL;   //初始化表头和中间指针
    int i;
    for (i = n; i > 0; --i)
    {
        p = new List;     //申请空间,创建第一个节点
        cin >> p->num;      //往节点中存入数据信息
        if (head == NULL)
        {
            head = p;
        }
        else
        {
            q->next = p;
        }
        q = p;
    }
    q->next = NULL;
    return head;
}
void print(List *head)        //输出
{
    List *p;
    p = head;
    while (p)
    {
        cout<<p->num;
        p = p->next;
        cout << " ";
    }
    cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
    List *p, *q;
    cout << "请输入单链表的节点个数:";
    int n;
    cin >> n;
    cout << endl;
    cout << "创建一个节点为" << n << "的单链表" << endl;
    p = createList(n);
    cout << endl;
    cout << "打印单链表" << endl;
    print(q);
    cout << endl;
    return 0;
}