首页 > 其他分享 >c语言实现链表的基本操作——初始化,求长度,添加节点,遍历输出

c语言实现链表的基本操作——初始化,求长度,添加节点,遍历输出

时间:2023-05-01 20:22:05浏览次数:51  
标签:LinkList 遍历 LNode int next 链表 基本操作 data

#include <stdio.h>
#include <stdlib.h>

//创建结构体并命名
typedef struct Node //typedef用于对struct的重命名
{
  int i;
  struct Node *next;
}LNode, *LinkList; //定义一个结构体指针


//链表初始化
bool InistList(LinkList L)
{
  L = (LNode *)malloc(sizeof(LNode)); //为头节点动态分配内存
  if(L == NULL)    return false;//不存在就直接结束
  L -> next = NULL;
  return true;//next指向NULL完成
}

//求链表的长度
int GetListLength (LinkList L)
{
  int listlength = 0;
  LNode *p = L -> next;
  while (p)
  {
    listlength ++;
    p = p -> next;
  }
  return listlength;
}

//初始化链表添加值
//头插法
void HeadInsertList(LinkList L, int n) //n为插入数据的个数
{
  int data;
  L -> next = NULL;
  while(n--)
  {
    scanf("%d", &data);
    LNode *p =(LinkList)malloc(sizeof(LNode));
    p -> i = data;
    p -> next = L -> next;
    L -> next = p;
  }
}

//尾插法
void HeadInsertList(LinkList L, int n)
{
  int data;
  LNode *End;
  End = L;
  while(n--)
  {
    scanf("%d", &data);
    LNode *p = (LinkList)malloc(sizeof(LNode));
    p -> i = data;
    End -> next = p;
    End = p;
  }
  End -> next = NULL;//最后一个节点指向空
}

//链表的遍历输出
void TraverList(LinkList L)
{
  LNode *p = L -> next;
  while(p)
  {
    printf("%d", p->i);
    p = p -> next;
  }
}

标签:LinkList,遍历,LNode,int,next,链表,基本操作,data
From: https://www.cnblogs.com/yuooo/p/17366951.html

相关文章

  • Java层序遍历打印二叉树(有Null值)
    publicclassSolution{publicstaticvoidmain(String[]args){Integer[]arr={3,9,20,null,null,15};//根据数组构造出二叉树TreeNodetreeNode=creatTreeNode(arr,0);//层序有Null值的打印二叉树printBin......
  • 链表
    手写双链表:#include<iostream>//链表节点结构体structListNode{intvalue;ListNode*prev;ListNode*next;ListNode(intv,ListNode*p=nullptr,ListNode*n=nullptr):value(v),prev(p),next(n){}};classLinkedList{public:Li......
  • 【数据结构】链式型存储结构-双向链表
    1 前言只要大家坐过火车,对于双向链表的理解就相当简单。双向链表就是在单链表的基础之上,为每一个结点增加了它的前继结点,我们来看看。2 双向链表双向链表的定义如下:typedefstructDaulNode{ElemTypedata;structDaulNode*prior;//前驱结点structDa......
  • 【数据结构】链式型存储结构-循环单链表
    1 前言对于单链表,由于每个结点只存储了向后的指针,到了尾部标识就停止了向后链的操作。也就是说,按照这样的方式,只能索引后继结点不能索引前驱结点。这样一来,不从头结点出发,这样就无法访问到全部结点。为了解决这个问题,我们只需要将单链表的尾结点的指针由空指针改为指向头结点......
  • 【数据结构】链式型存储结构-静态链表
    1 前言地球人都知道C语言是个伟大的语言,它的魅力在于指针的灵活性,使得它可以非常容易地操作内存中的地址和数据,这比其他高级语言更加灵活方便。(面向对象语言,比如java,可以使用对象引用机制间接地实现指针的某些功能)但是古人还是木有C语言丫,木有JAVA丫,只有原始的Basic,Fortran等......
  • 【数据结构】链式型存储结构-单链表
    1 前言线性表的链式存储结构的特点就是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以在内存中未被占用的任意位置。比起顺序存储结构每个元素只需要存储一个位置就可以了。现在链式存储结构中,除了要存储数据信息外,还要存储它的后继元素的存储地址(指针)。也就是说......
  • 二十一:迭代器模式:遍历的魅力
    a.迭代器模式揭秘迭代器模式,一个让遍历变得优雅、简单的设计模式。当我们面对各种数据结构时,迭代器模式提供了一种统一的方法来访问容器中的元素,而无需关心具体的实现细节。迭代器模式的核心思想是将遍历过程与容器的内部实现分离,为遍历不同类型的容器提供一个通用接口。在日常生......
  • c#-单链表
    namespaceMyLink;publicclassMyLinkedList{privateint_size{get;set;}publicclassMyTreeNode{publicintval{get;set;}publicMyTreeNodenext{get;set;}publicMyTreeNode(intval){this.val=val;......
  • matlab学习1(基本操作、stringchar、矩阵运算、基础图)
    1.matlab简介matlab是矩阵实验室,数据是以矩阵的形式存在。2.基本操作1).直接在命令行输入指令2).在脚本文件章编写程序后运行脚本文件:存放代码的文件,尾缀:.m实时脚本文件界面方便,将结果实时显示在代码旁边(可以加代码,图片,类似于一个文档编辑器,很推荐使用)3).在函数文......
  • 【Redis】Redis数据结构——链表
    【Redis】Redis数据结构——链表注意事项:本文第三点redis中操作列表的相关命令可参考博文:【Redis】Redis基础命令集详解_Etui۹(・༥・´)و̑̑的博客本文参考内容如下:1、Redis数据结构——链表-随心所于-2、《Redis设计与实现》(黄健宏·著)第3章链表本文仅供学习交流使用!1、Redi......