热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1.创建单项链表

#include#include#includetypedefstructNode{intdata;数据域struct

# include
# include
# include typedef struct Node{int data;//数据域struct Node *pNext;//指针域}NODE, *PNODE;
//NODE等价于struct Node
//PNOD等价于struct Node *
//函数声明PNODE create_list(void);
void traverse_list(PNODE pHead);int main(void){PNODE pHead = NULL;//等价于 struct Node * pHead =NuLL;//生成链表pHead = create_list();//create_list()这个函数的功能,创建一个非循环单链表,并将该链表的头结点的地址赋值给pHead//输出链表,也就是遍历链表traverse_list(pHead);//traverse表示遍历的意思return 0;
}PNODE create_list(void){//返回值是一个地址PNODEint len;//用来存放有效结点的个数int i;int val;//用来临时存放用户输入的结点的值/*首先一定要先生成一个临时的头结点pHead分配了一个不存放有效数据的头结点,pHead就指向了头结点*/PNODE pHead = (PNODE)malloc(sizeof(NODE));//返回到是结点本身的数据类型所以说是NODEif(pHead == NULL){printf("分配失败,程序终止");exit(-1);}PNODE pTail = pHead;//把pHead的值赋值给pTail,即pHead跟pTail就都指向了头结点pTail->pNext = NULL;//然后把头指针给清空,这样就会导致pTail永远指向尾结点printf("请输入您需要生成的链表节点的个数: len = ");scanf("%d",&len);for(i=0;idata = val;//把pNew生成一个临时的结点,然后将接收到的val这个结点存放到这个数据域里面去pTail->pNext = pNew;//假设pTail永远指向尾结点,把pNew挂在尾结点的后面pNew->pNext = NULL;//然后新结点变成尾结点pTail = pNew;//然后pTail就指向尾结点了//关键是然后生成这个pTail/*pHead->pNext = pNew;//然后再把临时结点放到pHead后面pNew->pNext = NUILL;//然后再将临时结点的指针域给清空,因为临时结点已经变成最后一个结点啦*/}return pHead;
}
void traverse_list(PNODE pHead){//遍历的时候也不需要返回值,但是一定需要参数PNODE p =pHead->pNext;//p指向第一个有效结点/*p的值此时有可能为空,如果这个链表为空,那么这个链表只有一个结点就是所谓的头结点链表即便是空了,也会有一个头结点的,然后再用pHead指向链表为空即:链表中只有一个头结点,没有有效的结点*/while(p != NULL){//当p不为空的时候也就是p已经指向了一个结点了,只有p不为空就一直输出即可printf("%d ",p->data);p = p->pNext;}printf("\n");return ;}/*void f(){int i =10;//f()调用完毕之后,i的值就会消失int * p = (int *)malloc(100);//当f()调用完毕之后,p本身的内存就会被释放掉,因为p是静态的,但是后面分配的100个字节还会存在}*/

推荐阅读
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文介绍了C++中的引用运算符及其应用。引用运算符是一种将变量定义为另一个变量的引用变量的方式,在改变其中一个变量时,两者均会同步变化。引用变量来源于数学,在计算机语言中用于储存计算结果或表示值抽象概念。变量可以通过变量名访问,在指令式语言中引用变量通常是可变的,但在纯函数式语言中可能是不可变的。本文还介绍了引用变量的示例及验证,以及引用变量在函数形参中的应用。当定义的函数使用引用型形参时,函数调用时形参的改变会同时带来实参的改变。 ... [详细]
author-avatar
漂流小叶子2502896817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有