/* 输入一个数列以0位结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点, 然后对剩余的进行排序,并输出释放节点 */ #include <iostream> using namespace std; struct Node { int num; Node *next; }; Node *head; void create() { head = new Node; head->num = 0; head->next = NULL; int x; Node *p; while (cin >> x && x) { p = new Node; p->num = x; p->next = head->next; head->next = p; } } Node* findMax() { Node *p = head->next, *pos; int max = -1; while(p != NULL) { if (p->num > max) { max = p->num; pos = p; p = p->next; } } return pos; } void del(Node *pos) { Node* p = head; while(p->next != pos) { p = p->next; } Node *q = p->next; p->next = q->next; cout << "删除最大节点:" << q->num << endl; delete q; } void sort() { Node *p, *q; for (p = head->next; p != NULL; p = p->next) for(q = head->next; q != NULL; q = q->next) if (q->num < p->num) { int t; t = q->num; q->num = p->num; p->num = t; } } int main() { create(); Node *max = findMax(); del(max); sort(); Node *p = head->next; while(p != NULL) { cout << p->num << " "; p = p->next; } cout << endl; return 0; }