首页 > 其他分享 >C语言实现链表的创建与遍历

C语言实现链表的创建与遍历

时间:2023-02-06 18:24:01浏览次数:35  
标签:遍历 list C语言 链表 PNODE pHead NULL pNext

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 
 5 typedef struct Node{
 6     int data;
 7     struct Node * pNext;
 8 }NODE, * PNODE;
 9 
10 PNODE create_list();
11 void traverse_list(PNODE pHead);
12 
13 int main(void) {
14     
15     PNODE pHead=NULL;
16     
17     pHead =    create_list(); 
18     traverse_list(pHead);
19     
20     return 0;
21 }
22 
23 PNODE create_list(void)
24 {
25     int len = 0, val=0, i=0;
26     
27 
28     //构造链表的头节点
29     PNODE pHead = (PNODE)malloc(sizeof(NODE)); 
30     if(NULL == pHead){
31                 printf("内存分配失败!\n");
32                 exit(1);
33             }
34     PNODE pTail = pHead;
35     pTail->pNext = NULL;
36     
37     printf("请输入要生成链表的个数:len=");    
38     scanf("%d",&len);
39         
40     for(i=0;i<len;++i){
41         //TODO
42         printf("请输入第%d个节点的值:", i+1);    
43         scanf("%d",&val);
44         
45         PNODE pNew = (PNODE)malloc(sizeof(NODE)); 
46         
47         if(NULL == pNew){
48             printf("内存分配失败!\n");
49             exit(1);
50         }
51         
52         pNew->data = val;
53         pTail->pNext = pNew;
54         pNew->pNext = NULL;
55         pTail = pNew;        
56     }
57     return pHead;
58 } 
59 
60     void traverse_list(PNODE pHead)
61     {
62         PNODE p = pHead->pNext;
63         while(NULL != p){
64             printf("%d ",p->data);
65             p = p->pNext;
66         }
67         printf("\n");
68         //return; 
69     }

打印结果:

 

标签:遍历,list,C语言,链表,PNODE,pHead,NULL,pNext
From: https://www.cnblogs.com/TonyJia/p/17096347.html

相关文章

  • 循环链表的创建、插入、删除、逆序、显示(C++实现)
    对于单链表,因为每一个结点仅仅存储了向后的指针。到了尾标志就停止了向后链的操作,这样,其中某一结点就无法找到它的前驱结点了。对于单链表的操作大家能够看我的这篇博客htt......
  • 代码随想录算法训练营第十八天|LeetCode 513.找树左下角的值、112. 路径总和 、113.路
    513.找树左下角的值文章:代码随想录(programmercarl.com)视频:怎么找二叉树的左下角?递归中又带回溯了,怎么办?|LeetCode:513.找二叉树左下角的值_哔哩哔哩_bilibili思路(......
  • 【☀️C语言函数传参の结构体数组篇☀️】
    背景介绍C语言中函数参数传递的两种方式(“引用传递做函数参数”是C++的特性,C语言不支持。)(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形......
  • C语言字符串操作总结大全(超详细)
    1)字符串操作strcpy(p,p1)复制字符串strncpy(p,p1,n)复制指定长度字符串strcat(p,p1)附加字符串strncat(p,p1,n)附加指定长度字符串strlen(p)取字符串长度......
  • 排序与链表 力扣[21. 合并两个有序链表,23. 合并K个升序链表,148. 排序链表]
    21.合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1:输入:l1=[1,2,4],l2=[1,......
  • 1.2 链表
    和数组不同的是,链表并不需要一块连续的内存空间,它可以通过指针将一组零散的内存块串联起来使用。链表的基本操作是最考验逻辑思维能力的,尤其需要注意:指针/引用的含义哨......
  • 在C语言中使用enter键结束循环
    1网上查到的信息,enter键可以有对应\n\r、\r\n、\r、\n),首先确认在C语言中getchar()获取的是什么字符(’\n‘)         2使用代码实现,通过enter结束循......
  • PHP遍历数组的6种方式总结
    目录1、foreach2、array_map3、array_walk4、for5、each6、reset总结在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那么问题来......
  • 代码随想录算法训练营Day5 数组、链表复习
    数组部分数组最重要的思维方式是双指针的使用。快慢指针在进行元素移除和元素操作时会使用两个for循环嵌套,此时时间复杂度为O(n²)。在for循环中通过双指针(快慢指针)的使......
  • c语言中共用栈的一个例子
    栈的其中一个作用:1.函数的返回地址和参数栈保存了一个函数调用时所需要的维护信息,可能和搭载另一个函数的栈一起返回函数的返回值(下面有一个例子)#include <stdio.h>#d......