C语言链表排序_C语言版数据结构链表

C语言链表排序_C语言版数据结构链表以上搬运至郝斌老师数据结构中的视频知识,然后依样画葫芦去写的;当然指针知识和链表的基础知识要先懂:首先先创建链表,如下:typedef struct node{intdata;//创建数据域structnode*pNext;//创建指针域}NODE,*PNODE;//相当于structnode,struct*nodePNODE

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

//以上搬运至郝斌老师数据结构中的视频知识,然后依样画葫芦去写的;

//当然指针知识和链表的基础知识要先懂:

//首先先创建链表,如下:

#include <stdio.h>

#include <malloc.h>

#include <stdlib.h>

typedef  struct  node

{


int data;
//创建数据域


struct node * pNext;
//创建指针域

}NODE, *PNODE;
//相当于struct node,struct *node

PNODE  create_list()
//创建的新链表

{


int i;


int val;


int len;


PNODE pHead = (PNODE)malloc(sizeof(NODE));
//这个要加头文件malloc.h,应该都懂


if(NULL == pHead)


{


printf(“头结点分配失败!退出程序\n”);


exit(-1);
//需要加头文件stdlib.h


}


PNODE pTail  =  pHead;
//创建尾节点作为首节点,这个的作用在于后面将新创建的节点覆盖于尾节点,使其连接成为一个链表


pTail->pNext = NULL;



printf(“请您输入你要创建的节点个数:len = “);


scanf(“%d”, &len);


for(i=0; i<len; ++i)


{


PNODE pNew = (PNODE)malloc(sizeof(NODE));


if(NULL == pNew)


{


printf(“新结点分配失败!退出程序!”);


exit(-1);


}


printf(“请您输入要输入第%d的节点的值:”, i+1);


scanf(“%d”, &val);


pNew->data = val;


pTail->pNext = pNew;
//使尾节点(最开始是头结点)指向新创建新节点


pNew->pNext = NULL;
//使新节点的指针域为空,成为尾节点


pTail = pNew;
//使新节点再次成为尾节点,和首次的步骤一样


}


return pHead;

}

//其次,对链表的遍历是必须的;

void traverse_list(PNODE pHead)

{


PNODE p = pHead->pNext;
//指向首节点,而非头结点


while(p != NULL)


{


printf(“%d\t”, p->data);
//相当于数组中的p++


p = p->pNext;


}

}

//这里需要对链表的长度进行统计,才能对冒泡排序进行运算:

//因此依据上面:

int length_count(PNODE pHead)

{


int count=0;


PNODE p = pHead->pNext;


while(NULL != p)


{


p = p->pNext;


count++;


}


return count;

}

//最后开始着手写链表的排序,采用的是冒泡排序:

void sort_list(PNODE pHead)

{


int i, j, t;


PNODE p, q;


int len;


len = length_count(pHead);


for(i=0, p=pHead->pNext; i<len-1; ++i, p = p->pNext)
//p = pHead->pNext;相当于数组中p = 0, p = p->pNex相当于p++


{


for(j=0, q=pHead->pNext; j<len-1-i; ++j,q=q->pNext)
//其实以上都是泛型类比所得的


{


if(q->data > q->pNext->data)


{


t = q->pNext->data;


q->pNext->data = q->data;


q->data = t;


}


}


}

}

int main(void)

{


PNODE pHead=NULL;
//创建头结点,并且让它为空


pHead = create_list();



sort_list(pHead);


traverse_list(pHead);


return 0;

}

/*

程序运行结果:

请您输入你要创建的节点个数:len = 5

请您输入要输入第1的节点的值:12

请您输入要输入第2的节点的值:34

请您输入要输入第3的节点的值:26

请您输入要输入第4的节点的值:44

请您输入要输入第5的节点的值:0

0       12      26      34      44      请按任意键继续. . .

*/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183775.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月31日 下午3:46
下一篇 2022年8月31日 下午3:46


相关推荐

  • 使用Intellij IDEA新建Web项目

    使用Intellij IDEA新建Web项目在学习 Servlet 的过程中 发现大多数的教程都是使用 MyEclipse 或者 Eclipse 来创建 Web 项目 这让一直使用高逼格的 LZ 很是不爽 于是自己配置了一下使用 IntellijIDEA 新建了 Web 项目 LZ 这里使用的 IntellijIDEA 1 4 版本 我们先来看看这个版本的 IDEA 骚气的启动界面吧 1 启动了 IDEA 后 在开始界面处点击 CreateNewPro 选

    2026年3月27日
    4
  • ca机构将会被区块链取代

    ca机构将会被区块链取代ca 机构是发行数字证书与物理世界的各种证件所关联 未来政府发行某个证件 如身份证 后 直接写入区块链 相关各方可以在区块链上直接验证主体身份 无需再通过第三方中介 ca 机构 对用户身份进行验证 ca 机构存在已经有几十年 模式陈旧 势必也将被新的模式 去中介 去中心 的区块链模式替代 shca bjca 都曾经被爆出证书被冒领的事件 ca 机构做为第三方 不但收费增加成本还无法真正保障数

    2026年3月17日
    1
  • 大数据监控平台实践之路

    大数据监控平台实践之路大数据监控平台实践之路一、监控体系业务层:应用层:系统层:二、架构设计Telegraf:input:output:调度频率:服务启动:InfluxDB:服务启动:常用命令:Grafana:Grafana主要特性:简单使用介绍:原文地址:大数据监控平台实践之路一、监控体系监控粒度、监控指标完整性、监控实时性是评价监控系统的三要素。从分层体系可以把监控系统分为三个层次:业务层:业务系统…

    2022年5月27日
    36
  • CentOS镜像下载(阿里云源)[通俗易懂]

    CentOS镜像下载(阿里云源)[通俗易懂]文章目录1.下载链接2.下载步骤3.版本说明1.下载链接CentOS7.9.2009:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/所有版本:http://mirrors.aliyun.com/centos/官网下载页:https://www.centos.org/download/2.下载步骤进入阿里云CentOS7.9.2009下载页,点击CentOS-7-x86_64-DVD-2009.iso以进行下载

    2022年5月6日
    56
  • xml格式化 java_Java XML格式化程序

    xml格式化 java_Java XML格式化程序xml格式化javaeXtensiveMarkupLanguage(XML)isoneofthepopularmediumformessagingandcommunicationbetweendifferentapplications.SinceXMLisopensourceandprovidescontroloverdataformatv…

    2022年7月16日
    19
  • linux如何查看所有的用户和组信息?

    linux如何查看所有的用户和组信息?

    2021年10月27日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号