#include <iostream> #include <string> using namespace std; //结构 struct men { int age; men *next; }; //生成有序链表 void insertM(men *&head, int num) { men *s, *q;//定义指针 s = new men;//定义堆内存 s->age = num;//新结点 s->next = NULL;//新结点 if (head == NULL)//如果没有指向 { head = s;//直接指向并返回 return; } if (head->next == NULL)//如果只有一项 { if (head->age > num)//应该放在前面 { s->next = head;//新结点的next指向第一项 head = s;//头指针指向新结点 } else//应该放在第二项 { head->next = s;//头指针的next指向新结点 } return; } q = head;//跟踪指针指向头指针 开始遍历 while (q->next != NULL)//当还有下一结点的时候 { if (q->next->age >= num)//下一结点的值比较大 { s->next = q->next;//新结点的next指向下一结点 q->next = s;//跟踪指针的next指向新结点 return; } if (q->next->next == NULL)//下一结点的next指向空 即没有下下结点了 { q->next->next = s;//把新结点放在链表最后 return; } q = q->next;//遍历递增 } } void showM(const men *head) { cout << "Now mens club include:" << endl; while (head) { cout << head->age << ' '; head = head->next; } cout << endl; } int main() { men *head = NULL;//初始化头指针 int num; cin >> num; while (num != 0) { insertM(head, num); cin >> num; } showM(head); getchar(); return 0; }