将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;
}