二级C语言考试上机题解:链表排序
需积分: 9 165 浏览量
更新于2024-07-21
收藏 48KB DOCX 举报
"该资源为全国计算机考试二级C语言的上机操作题库,特别是针对排序问题的程序填空题目,旨在帮助考生熟悉C语言实现链表排序的代码编写。"
在C语言中,链表是一种重要的数据结构,用于存储一系列元素。在给定的程序中,函数`fun`被设计用来对单向链表中的节点数据进行排序,从最小到最大。链表的每个节点由结构体`NODE`定义,包含一个整型数据`data`和指向下一个节点的指针`next`。
程序的核心部分是`fun`函数,它使用了冒泡排序的思路,通过两个指针`p`和`q`遍历链表。`p`始终指向当前未排序部分的头节点,而`q`则用于在未排序部分内部进行比较。如果`p->data`大于`q->data`,则交换两节点的值,使得较大的值向后移动。
在给定的代码中,需要填充以下下划线处的内容:
1. `p=__1__;` 这里应初始化`p`为链表的头节点,即`h->next`。
2. `q=__2__;` 在每次外层循环中,`q`应初始化为`p`的下一个节点,即`p->next`。
3. `if(p->data__3__q->data)` 这里应该填写比较操作符,因为我们要判断`p->data`是否大于`q->data`。
完整的代码填充如下:
```c
void fun(NODE* h)
{
NODE* p = h->next; // 初始化p为头节点
while (p)
{
NODE* q = p->next; // 初始化q为p的下一个节点
while (q)
{
if (p->data > q->data) // 比较p和q的data
{
t = p->data;
p->data = q->data;
q->data = t;
}
q = q->next; // 移动q到下一个节点
}
p = p->next; // 移动p到下一个节点
}
}
```
此外,程序还包含了两个辅助函数:
1. `creatlist`函数用于根据给定的数组创建链表。它接受一个整型数组`a`,并返回新创建的链表头节点。
2. `outlist`函数用于打印链表的所有元素,从头到尾,并在末尾添加"->End"表示链表结束。
在`main`函数中,首先创建了一个包含数字0、10、4、2、8、6的链表,然后调用`outlist`函数打印原始链表,最后调用`fun`函数对链表进行排序,再次调用`outlist`函数展示排序后的链表。这样的练习有助于考生理解和掌握C语言处理链表排序的技巧。
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-27 上传
2010-09-06 上传
2010-07-26 上传
点击了解资源详情
freecloudjs
- 粉丝: 4
- 资源: 7
最新资源
- MyEclipse6 JavaEEDev_PDF
- oracle的入门心得
- WebService传递POJO和对象数组的例子
- 租用游艇问题 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1≤i<j≤n。试设计一个算法,计算出从游艇出租站1 到游艇出租站n 所需的最少租金。
- 示波器基础知识,学习
- c c++算法大全(数据结构)
- Mac os的快捷键
- 最优装载 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。
- SIP呼叫流程典型流程图解及其详细解释
- Verilog HDL 入门教程
- EXT 中文手册.pdf
- CMMI软件-必备测试
- ASP转html静态页面后点击计数解决方法和用户登录状态的解决方法
- 模式识别的研究进展分析
- 几种嵌入式文件系统的对比
- eclipse中文教程