CG.单链表的排序与删除
【问题描述】输入一个整数序列,以单链表作为存储结构,将单链表中存储最大整数值的结点删除,然后按照链表从头到尾的顺序,将单链表中的整数存入顺序表,按照从大到小的顺序对顺序表排序,并输出顺序表。
【输入形式】整数序列,以空格做分隔,序列最多包含10个元素
【输出形式】整数序列,以空格做分隔
【样例输入】4 6 8 9 2 3
【样例输出】8 6 4 3 2
【样例说明】
- #include<iostream>
- #include<cstdlib>
- #include<cstdio>
- using namespace std;
- typedef struct node
- {
- int data;
- struct node* next;
- }node;
- node *Creatlist(){
- node *head = new node[10];
- head->next = NULL;
- node* pre = head;;
- int n;
- char ch=0;
- while (ch != '
')
- {
- cin >> n;
- ch = getchar();
- node* p=new node;
- p->data = n;
- pre->next = p;
- pre = p;
- }
- pre->next = NULL;
- return head;
-
- }
- void Dete(node *head){
- node *pre = head;
- node*p = pre->next;
- int max = -99999;
- while(p!=NULL)
- {
- if (p->data > max)
- {
- max = p->data;
- }
- p = p->next;
- }
- p = pre->next;
-
- while (p != NULL)
- {
- if (p->data == max)
- {
- pre->next = p->next;
- p = pre->next;
- }
- p = p->next;
- pre = pre->next;
- }
- }
- void sortshow(node *head)
- {
-
- int temp;
- for (node *pre = head->next; pre; pre = pre->next)
- {
- for (node *p = pre->next; p; p = p->next)
- {
- if (pre->data < p->data) {
- temp = pre->data;
- pre->data = p->data;
- p->data = temp;
- }
- }
- }
- node *pre = head->next;
- while (pre != NULL)
- {
- cout << pre->data << " ";
- pre = pre->next;
- }
-
-
-
- }
- int main()
- {
- node *head = Creatlist();
- Dete(head);
- sortshow(head);
- return 0;
- }
推荐阅读