单链表--排序
发布日期:2021-11-02 05:00:17
浏览次数:2
分类:技术文章
本文共 1132 字,大约阅读时间需要 3 分钟。
有一个带头节点的单链表L(至少有一个数据节点),设计一个算法使其元素递增有序排列。
#include#include typedef struct LNode{ int data; struct LNode *next;}LinkNode; //单链表节点类型void CreatList(LinkNode *&L,int a[],int n);void Display(LinkNode *L);void sort(LinkNode *&L);int main(){ int a[] = {1,5,9,3,2,4}; LinkNode *L; CreatList(L,a,6); sort(L); Display(L);} void CreatList(LinkNode *&L,int a[],int n){ LinkNode *s,*r; //声明两个指针 L = (LinkNode *)malloc(sizeof(LinkNode)); //创建一个头结点 r = L; // r 始终指向尾节点,初始时指向头结点 for( int i = 0; i < n; i++) { s = (LinkNode *) malloc(sizeof(LinkNode)); s->data = a[i]; r->next = s; r = s; } r->next = NULL; } void Display(LinkNode *L){ LinkNode *p = L->next; //p指向第一个结点(不一定是头结点) while( p!= NULL) { printf("%d ",p->data); p = p->next; } printf("\n");}void sort(LinkNode *&L){ LinkNode *p,*pre,*q; p=L->next->next;//p指向L的第2个数据节点 L->next->next=NULL; //构造只含一个数据节点的有 while (p!=NULL) { q=p->next; //q保存*p节点后继节点的指针 pre=L; //从有序表开头进行比较,pre指向插入*p的前趋节点 while (pre->next!=NULL && pre->next->data data) pre=pre->next; //在有序表中找插入*p的前趋节点*pre p->next=pre->next; pre->next=p; p=q; //扫描原单链表余下的节点 }}
转载地址:https://blog.csdn.net/weixin_43486985/article/details/97619171 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月04日 05时23分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
在分页状态下删除纪录的问题
2019-04-27
使用DataGrid动态绑定DropDownList
2019-04-27
DataGrid删除确认及Item颜色交替
2019-04-27
NetBeans配置Xdebug 远程调试PHP
2019-04-27
MediaWiki安装
2019-04-27
Squid安装
2019-04-27
如何查看当前Linux的版本
2019-04-27
Ubuntu安装Nginx
2019-04-27
Ubuntu 下安装thttpd Web服务器
2019-04-27
用thttpd做Web Server
2019-04-27
服务器端开发经验总结 Linux C语言
2019-04-27
将网站程序放在tmpfs下
2019-04-27
使用Nginx的proxy_cache缓存功能取代Squid
2019-04-27
nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
2019-04-27
nginx 的proxy_cache才是王道
2019-04-27
Nginx proxy_cache 使用示例
2019-04-27
Nginx源代码分析 - 日志处理
2019-04-27
使Apache实现gzip压缩
2019-04-27
Memcached在大型网站中应用
2019-04-27
Hadoop简要介绍
2019-04-27