试设计一个算法,将元素e插入L中合适的位置,使插入后L仍为非递减有序。

时间:2021-12-20 12:18:41
试设计一个算法,将元素e插入L中合适的位置,使插入后L仍为非递减有序。
/* 设L是一个带头结点的非递减有序单链表的表头指针。
* 试设计一个算法,将元素e插入L中合适的位置,使插入后L仍为非递减有序。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define MAXN 99999999
//定义单链表的表头指针
struct LinkList {
int num;
LinkList * next;
} *L;

//插入新节点
void insert(LinkList *newNode) {
LinkList *temp = L;

while (temp->next != NULL) {
if (temp->next->num > newNode->num)
break;
//在这里break掉了
temp = temp->next;
}
newNode->next = temp->next;
temp->next = newNode;
}
//打印链表
void output() {
LinkList *p;
p = L->next;
while (p != NULL) {
printf("%d\t", p->num);
p = p->next;
}
printf("\n");
}

int main() {
L = new LinkList;
L->next = NULL; //表头节点的指针初始化为空
L->num = MAXN; //表头节点的值
int n;
while (1) {
scanf("%d", &n);
LinkList * now;
now = new LinkList;
now->num = n;
now->next = NULL;
insert(now);
output();
}
return 0;
}