在一个有序的链表上插入一个节点,使得插入节点后的链表仍然有序
#include<stdio.h>
#define N 5
struct Node
{
int data;
struct Node *next;
};
//创建链表并初始化数据
struct Node *create()
{
int i;
struct Node *head,*p1,*p2;
head = p1 = p2 = (struct Node*)malloc(sizeof(struct Node));
head->data = 89101;
for(i=1; i<N; i++)
{
p1 = (struct Node*)malloc(sizeof(struct Node));
p1->data = 89102+2*i-1;
p2->next = p1;
p2 = p1;
}
p2->next = NULL;
return head;
}
//插入一个节点
void insert(struct Node *head, struct Node *p)
{
struct Node *pt = head;
int temp;
while(pt != NULL)
{
if(p->data < pt->data)
{
break;
}
pt = pt->next;
}
//将找到的大于p中的数据值的节点和p的数据进行交换
temp = pt->data;
pt->data = p->data;
p->data = temp;
//现在pt存储的是p的数据,p存储的是pt的数据,构造连接pt->p->
p->next = pt->next;
pt->next = p;
}
void main()
{
int i;
struct Node *head,*pt;
//创建一个链表
head = pt = create();
//创建一个新节点
struct Node *p;
p = (struct Node*)malloc(sizeof(struct Node));
p->data = 89102;
printf("链表初始数据:\n");
while(pt)
{
printf("%d\n", pt->data);
pt = pt->next;
}
printf("\n插入节点%d:\n", p->data);
//插入链表
insert(head, p);
pt = head;
while(pt)
{
printf("%d\n", pt->data);
pt = pt->next;
}
//插入一个节点
p = (struct Node*)malloc(sizeof(struct Node));
p->data = 89106;
printf("\n插入节点%d:\n", p->data);
insert(head, p);
pt = head;
while(pt)
{
printf("%d\n", pt->data);
pt = pt->next;
}
//插入一个节点
p = (struct Node*)malloc(sizeof(struct Node));
p->data = 89107;
printf("\n插入节点%d:\n", p->data);
insert(head, p);
pt = head;
while(pt)
{
printf("%d\n", pt->data);
pt = pt->next;
}
}
分享到:
相关推荐
《数据结构》课程设计 报告 学 院:_电气与信息工程学院_ 专业班级: 学生姓名: 学 号: 设计地点...7 3.2插入节点函数代码解释 7 3.3删除节点函数代码解释 8 3.4查找函数代码解释 8 3.5货品信息修改函数代码解释 9 3.6
(3) 更新记录模块:更新数据包括对员工工资信息的删除、插入、和排序(排序是对链表节点 的修改而不修改员工信息)。删除功能是彻底删除掉某员工的工资信息,也就是单链表的 删除操作,在删除某员工的同时也要修改她...
小结 练习 参考文献 笫3章 表、栈和队列 3.1 抽象数据类型(ADT) 3.2 表ADT 3.2.1 表的简单数组实现 3.2.2 链表 3.2.3 程序设计细节 3.2.4 双链表 3.2.5 循环链表 3.2.6 例子 3.2.7 链表的游标实现 ...
摊还分析11.1 一个无关的智力问题11.2 二项队列11.3 斜堆11.4 斐波那契堆11.4.1 切除左式堆中的节点11.4.2 二项队列的懒惰合并11.4.3 斐波那契堆操作11.4.4 时间界的证明11.5 伸展树总结练习参考文献第12章 高级数据...
17.1.4 向链表中插入或移除节点 495 17.1.5 搜索链表 498 17.2 链表的应用 504 17.3 迭代器 514 17.3.1 指针作为迭代器 514 17.3.2 迭代器类 515 17.4 树 520 第18章 异常处理 535 18.1 异常处理基础 535 ...
b. 创建一个班机链表,每个节点都包含指向一个乘客链表的指针; c. 该程序要有顾客购票,查询班机起飞降落时间,班机订票情况等3个功能,并实现菜单选项 5、 用C++编写一个简单的行编辑器,每个结点保存一...
摊还分析11.1 一个无关的智力问题11.2 二项队列11.3 斜堆11.4 斐波那契堆11.4.1 切除左式堆中的节点11.4.2 二项队列的懒惰合并11.4.3 斐波那契堆操作11.4.4 时间界的证明11.5 伸展树小结练习参考文献第12章 高级...
8.6 路径压缩和按秩求并的最坏情形 8.7 一个应用 小结 练习题 参考文献第9章 图论算法 9.1 若干定义 9.2 拓扑排序 9.3 最短路径算法 9.3.1 无权最短路径 9.3.2 dijkstra算法 9.3.3 具有负边值的...
8.6 路径压缩和按秩求并的最坏情形 8.7 一个应用 小结 练习题 参考文献第9章 图论算法 9.1 若干定义 9.2 拓扑排序 9.3 最短路径算法 9.3.1 无权最短路径 9.3.2 dijkstra算法 9.3.3 具有负边值的...
摊还分析11.1 一个无关的智力问题11.2 二项队列11.3 斜堆11.4 斐波那契堆11.4.1 切除左式堆中的节点11.4.2 二项队列的懒惰合并11.4.3 斐波那契堆操作11.4.4 时间界的证明11.5 伸展树小结练习参考文献第12章 高级数据...
摊还分析11.1 一个无关的智力问题11.2 二项队列11.3 斜堆11.4 斐波那契堆11.4.1 切除左式堆中的节点11.4.2 二项队列的懒惰合并11.4.3 斐波那契堆操作11.4.4 时间界的证明11.5 伸展树小结练习参考文献第12章 高级数据...
8.6 路径压缩和按秩求并的最坏情形 8.7 一个应用 小结 练习题 参考文献 第9章 图论算法 9.1 若干定义 9.2 拓扑排序 9.3 最短路径算法 9.3.1 无权最短路径 9.3.2 Dijkstra算法 9.3.3 具有负边值的图 9.3.4 无圈图 ...