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      请按任意键继续. . .

*/

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • html 鼠标形状箭头,CSS各种鼠标样式介绍

    html 鼠标形状箭头,CSS各种鼠标样式介绍大家否曾注意到有些网站的鼠标不是规则的斜向上箭头的形状,而是十字形,或者是向左的箭头,或者是个问号等等。当你想在网页的不同位置让鼠标显示不同形状,以体现不同的功能区;当你想让你的网站体现与众不同的风格时,考虑一下在鼠标样式上下功夫吧。其实鼠标样式的用途还是极为广泛的,那么怎样才能实现鼠标的不同样式呢?这就要用到css层叠样式表中的cursor属性了。cursor的属性:pointer:手型c…

  • maven的资源过滤filters[通俗易懂]

    maven的资源过滤filters[通俗易懂]maven的资源过滤maven的过滤资源需要结合maven的2个定义才能实现,分别是:profile resources下面分开来做介绍。profileprofile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。需要掌握profile的定义以及…

  • 运维面试题整理

    运维面试题整理文章目录原题前言1.Nginx反向代理配置,此类urlwww.abc.com/refuse,禁止访问,返回4032.如何使用iptables将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:3.如何查看Linux系统当前的状态,cpu内存的使用情况及负载4.nginx如何重定义或者添加发往后端服务器的请求头5.编写shell脚本,将当前目录下大于10K的文件转移到/tmp目录下6.写出你所了解的门户网站的服务架构,可用什么方式实现的高可用、负

  • python里[::-1]_python中的数组类型

    python里[::-1]_python中的数组类型目录1.python数组下标2.b=a[i:j]3.b=a[i:j:k]1.python数组下标python下标有两套,一套是正的,一套是负的,a=’python’的下表如下python正下标012345负下标-6-5-4-3-2-1使用正下标时,下标i取值范围为0<=i<len(a)超出范围为越界使用负下标时,下标i取值范围为-1>=i>-len(a)-1超出范围为越界2.b=a[i:

  • 安卓—项目中插入百度地图sdk

    安卓—项目中插入百度地图sdk

  • linux的vi命令详解_useradd命令详解

    linux的vi命令详解_useradd命令详解最近vi用的多,很多技巧不知道,备注一份,vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

发表回复

您的电子邮箱地址不会被公开。

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