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


相关推荐

  • 大数据时代来临,数据应用随处可见吗_随着大数据时代的来临

    大数据时代来临,数据应用随处可见吗_随着大数据时代的来临序:大数据之所以可能成为一个时代,在很多程度上是因为这是一个可以由社会各界广泛参与,八面出击,处处结果的社会运动,而不仅仅是少数专家学者的研究对象。数据产生于各行各业,这场变革也必将影响到各行各业,因此,机遇也蕴含于各行各业。致力于IT创业的人们紧紧盯着这个市场,洞察着每一个机遇。数据对于科学进步有推动的作用,而海量数据对数据的分析既带来了机遇,也构成了新的挑战。随着大数据的迅速发展,许多企业开始…

    2022年9月28日
    0
  • php二次开发知识,Discuz二次开发基本知识详细讲解

    php二次开发知识,Discuz二次开发基本知识详细讲解Discuz是国内最流行的论坛软件管理系统,今天小编跟大家分享一篇关于Discuz二次开发基本知识详细讲解,感兴趣的朋友跟小编一起来了解一下吧!一)Discuz!的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。a)Admin:后台管理功能模块b)Api:DZ系统与其它系统之间接口程序c)Archiver:DZ中,用以搜索引擎优化的无图版d)Attachments:DZ中,…

    2022年5月12日
    38
  • 下载速度

    下载速度

    2021年7月1日
    84
  • 数据库系统原理——概述「建议收藏」

    数据库系统原理——概述「建议收藏」穷则独善其身,达则兼济天下一.什么是数据库狭义:存储数据的仓库广义:可以对数据进行存储和管理的软件以及数据本身统称为数据库数据库是由表、关系、操作组成二.为什么需要数据库几乎所有的应用软件的后台都需要数据库数据存储数据占用空间小,容易持久保存数据库的内容是存储在硬盘上,掉电之后任然存在存储比较安全软件是加密的,只能通过DBMS打开容易维护和升级使用SQL语句方便操作数据数据库移植比较容易简化对数据的操作为将来学习Oracle做准备.

    2025年6月7日
    0
  • webstorm激活码永久2021_通用破解码

    webstorm激活码永久2021_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    370
  • python cv.imread_为什么cv2里没有imread

    python cv.imread_为什么cv2里没有imread为什么使用Python-OpenCV虽然python很强大,而且也有自己的图像处理库PIL,但是相对于OpenCV来讲,它还是弱小很多。跟很多开源软件一样OpenCV也提供了完善的python接口,非常便于调用。OpenCV的稳定版是2.4.8,最新版是3.0,包含了超过2500个算法和函数,几乎任何一个能想到的成熟算法都可以通过调用OpenCV的函数来实现,超级方便。一、需要工具本…

    2022年10月14日
    0

发表回复

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

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