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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Winform布局美化样例

    Winform布局美化样例做了好多年Winform的程序的开发,主窗口的界面设计一般都要求做的更好一些,可以根据不同的系统功能模块进行归类整合,能使客户迅速寻找到相关功能的同时,也能感觉到整体性的美观大方,因此主窗口的界面设计总是会精益求精,力求做到更好用、更美观,这样才能吸引客户使用。目前的主体界面设计,可以使用很多控件进行美化,这样能使得开发者能够迅速开发好美观的界面,也可以使得界面总体性有一个统一、规范的基准。一般推

    2022年5月28日
    35
  • c语言反三角函数有哪些,反三角函数公式有哪些?

    01反三角函数公式包括1、arcsin(-x)=-arcsinx。2、arccos(-x)=π-arccosx。3、arctan(-x)=-arctanx。4、arccot(-x)=π-arccotx。5、arcsinx+arccosx=π/2=arctanx+arccotx。6、sin(arcsinx)=x=cos(arccosx)=tan(arctanx)=cot(arccotx)。7、当x∈…

    2022年4月8日
    182
  • vscode 快速新建一个HTML文件

    现在工作中很少会去重新写一个html文件,以致很多简单有效的快捷键都不太会用,写个笔记供以后参考,如有不对,请指正…1.在代码编辑器(vscode,pycharm,phpstorm)中新建一个xxx.html文件下面以vscode为示例:2.英文模式下输入:!后按tab键//这样一个简易的html文件就写完了想要快速打开HTML文件查看编辑效果1.点击编辑器主界面…

    2022年4月4日
    124
  • void及void指针含义的深刻解析

    void及void指针含义的深刻解析

    2021年12月2日
    46
  • 基于单片机的毕业设计简单点的_毕业设计设计思路范文

    基于单片机的毕业设计简单点的_毕业设计设计思路范文单片机毕业设计不用愁!!30篇单片机毕业设计参考案例30篇单片机毕业设计参考案例 这篇文章分享给大四的小伙伴,是时候该准备毕业设计了吧,别偷懒了,第二学期就准备实习了喔,所以小编我就开始为你们准备资料啦,30篇单片机毕业设计参考案例给你们啦,有什么不懂的问题可以加群讨论:813238832。下面就是案例: 更多单片机、物联网,MTK和proteus等资料分享,持续增加中,敬请关…

    2022年10月4日
    2
  • stm32之IIC应用实例(AT24C02芯片,硬件和软件方式驱动)「建议收藏」

    stm32之IIC应用实例(AT24C02芯片,硬件和软件方式驱动)「建议收藏」目录1.物理层:2.协议层:3.数据的传输:4.程序设计写完回头一看发现字数还不少,如果你觉得文字太枯燥,那么可以跳到后面程序设计,直接动手做实验。如果想仔细了解关于IIC协议的细节,那么希望你能慢慢把看完,看完后一定有所收获。概述:IICBUS(InterIntegratedCircuitBUS,内部集成电路总线)是飞利浦公司推出的二线制串行扩展总线;在IIC总线…

    2025年7月27日
    2

发表回复

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

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