/* 设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;
}
试设计一个算法,将元素e插入L中合适的位置,使插入后L仍为非递减有序。
有序链表插入算法
最新推荐文章于 2022-11-14 11:39:23 发布
本文介绍了一种在非递减有序单链表中插入新元素的算法,并通过C++实现。该算法确保插入操作后链表依然保持有序状态。文章包含完整的代码示例,展示了如何创建链表节点、插入新节点并输出链表内容。
1915

被折叠的 条评论
为什么被折叠?



