#include <stdio.h>

 //定义一个链表,链表是一种递归结构,在定义的时候必须要给结构起一个名字
typedef struct folder{
int level;
char* filename;
struct folder* child;//通过指针链接下一个结构
}folder; int main(){
folder first={,"first",NULL};
folder second={,"second",NULL};
folder thread={,"thread",NULL};
first.child=&second;
second.child=&thread;
folder* i=&first;
for(;i!=NULL;i=i->child){
printf("%s level is %i \n",i->filename,i->level);
}
return ;
}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAA2CAIAAADcVm8IAAAD+ElEQVR4nO3dUVbbRhgGUG8pdCFJ47SEwELadB2hTUrJIgKkj15CQrqTpE2x+9CHHnxcjUaaGdkaG937JI9Hn378wAfmyMyevvr87sPdo8c/zgCAkalhAKhGDQNANWoYAKpRwwBQTaOGF/fCnbH13Vls2J/8bc0z8osJwD7arOF1wbQ2zVbqpyBh1/VfpYbH/5kGgH309Pzzu4/NGt6Rsvz9nGrg5dQwALNZWg23NsfmSuyp2GJWCYWbO/JbT+m+aPowsZytfFEATNG6hns7MlY/s3gldzRlusS6zT0unipxnqwQACYq/U3pWA33tm9HQorW2tsUbguPw/3FU8Veh/SEslMAeICG1/C29ifmpHR8ys8ExVOlDFAcAsC0bL2GOypw/XBIY/Xmp+/vWNzKPOkhAEzUvO1vw409i8As0nnh/thTKbO1XjclP3GeWP4W50kPAWCK5uc+RQsAKlHDAFDN/NWXqw93jx7/UHsQAJie+bkaBoBK7t+UVsMAMLr7G5bUMACMbq6GAaCWZ+dfrvajhstuvd3pJFn5w+dxMzHA5Dz7+c+rj/tyw1JWA+26rkau4fDzQIqjADgY3/3y1/Xt8kgNj57fcTk1DDAV37/+en27PHrycpb//3Sz1hf/F9s/pIY7rtt6SvdF04fJfX0SA7NOAeAgHb/+en27OnryMlZXtY57JdZt8XVzuzBxntwcAB6y4zd/39yuvvn2p1nC/0VIqZa6Ndw9Z3gc7o/l585TkFB2CgAH7PjN3bqG/9Nab+GJ+1nDZfOk5OfOU5CjgwEm5/l9DW+rPvehhlufSt9fMEzWPL2n62OAqXj+613jTemwA7aynlKT4VOtFoHueWKxKfPvaJ70EAAess0aBgBGpYYBoJqTCzUMAJWcXCxvPqlhAKhBDQNANWoYAKo5uVjefPpHDQNABS/6ani021jLbrHd6SRZ+cPncdMwwOS8+G35fqOGWwtgtGLIutCupxq5hsPP/SiOAuBgbNZw7Lu/Gh6ZGgaYinUNLwLrPeuH4W9s4fos7UMiY+tDarh7+PQ5Y/ndk6R/vYmBWacAcJDSfxsOG7ex2LGhNbD7uFdi3eYex/K3NU9KiA4GmIrcN6XD40b7LgKNnMZ6WV2Fm2PX7R0+1ny5dRjuz00YfiIAB+Z0cA13bM4NGV7DA4fvyM+dpzin7BQADlJrDXc0XFYNDznulTjk+mH6/oJhsubpPV0NA0zFaXDDUqzDNh/OIt3WOKXx1OZimBmuxywC3deNxfbOGUsbPk9vTsp+AA5eo4YBgPGcXqphAKjk7HKlhgGgjrPL1fs/1DAA1HB2ufpdDQNAFWdv1TAAVKKGAaAaNQwAtfwL7MC8NUvd8rEAAAAASUVORK5CYII=" alt="" />

  在链表中插入值,只需要修改指针的值就行

    second.child=&thread;
folder fourth={,"fourth",NULL};

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAAzCAIAAACIbi6GAAAEGklEQVR4nO3dMY8bRRgG4P0FASFR0NAgQVAkogsVDRXNoYhDoqGio6OhQAJ+xl2EhERDg8QFRQKfaGhMQUMSuJPSUNFR0VAg5agoDNbmZnd2Zmzv2N7nqdbr2W9eX5H3nHidZnZ+eXD0SQMAjGl2fnlw9HHtFAAwMbPzxwoYAMamgAGgAgUMABW0C3j+v3BZ3/nNmbdsz/x15Rn5hwnA1ll+CGtZLZ0ds5biKZiw6eKvUsDj/zYDwNaZXfx3G9K2Vd0qV23P/M7tFDAAzdnF5a1oAXd2RvtM31N9J7PqJ1wcmd95SXzT9DB9c9byogCYnLOLf269/elgO/YVT9NfxpGOTJdYtLnHxakS82QNAWCKFgXcDLVCXwEP9m5kQorOwmsLl4XH4friVH0/h/QJZZcAsG/O0v4NOLd41lJU4VUp7Z7y20BxqpQAxUMAmJDZr48P3nriU9CdEgs1Un7Lh6t01eD89PWRk2vJkz4EgCn69uHfr9z+qLO9FuaBpqftwvV9T6UE69w3ZX5inr75a8yTPgSAybn38183Dj+snQIAJub0pz+vv/FB7RQAMDFf/fjHC6+/XzsFAEzMlz/8/vxr79VOAQAT88X3vz336ru1UwDAxHz+3aNnb75TOwUATMxn986fuXFUOwUATMydb355+uXbtVNk3CK86Ztoy+avnsfNwQDTcnL3wVPX36ydomm27NscRy7g8Js9ikcBsBuOT+9fe+mwdoqm2fECXuN2ChhgEo6/vn/txcMm//+7zTo/f1Lf+lUKOLJv5yXxTdPD5P58EgdmXQLA7lkUcF9R1ToelFi0xfvmtmBintw5AOytK++Arzw7D7TPh9PqFnA8Z3gcru+bn5unYELZJQDsqmUBL3QWW3jVdhZwWZ6U+bl5CuZoX4BpOT7d57+CXj5MX18QJivP4OWaGGASFgXcjPIhrPC4vT58qtM8EM/TNzYl/4bypA8BYG8tCxgAGI8CBoAKThQwAIzv5PSBAgaAsSlgAKhAAQNABQoYACpoF/D4N6EW7Ljpm2XL5q8xj/uAASZhWcDLP/c32m2dJwu223RL1SpgX8QBMBVhAW9I3/z9KOA1bqqAASZhsIA7W6H9MDwO30nPA+GorOIJF2fl7FsfmR9PkphncE7W1gDssEUBD7Zj4nETFEnfsivrc7tnxZyDwXJbMDFPyuW5WwOwk+LvgIsLOCzUeAHH18Svam/a3n0wc7i+b35untwJYZ6s3QHYPSd3N1LA4UYp59OLp2DTrI1WL+CyOWWXALB7xi/gyPq1FHDnU7mbrljAZS+qbD0AO2lRwJ0ttdD3VPvklYN4B3e2Y/thPPA8EM/ZN3bwdUVeyIp5EqelXwXA7lm+AwYAxnNHAQPA+BQwAFSggAGgAgUMAOP7F8+BJ4SCeR1QAAAAAElFTkSuQmCC" alt="" />

  链表相对于数组而言,插入数据非常快,但是如果有一个很长的链表,要想访问最后一个元素,你需要从第一个开始一层一层的读下去,而数组可以通过索引直接访问元素,所以使用数组还是链表需要根据环境来决定

C语言学习016:单链表的更多相关文章

  1. c++学习笔记—单链表基本操作的实现

    用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表).结点的查找.删除.排序.打印输出.逆置.链表销毁等基本操作. IDE:vs2013 具体实现代码如下: #include  ...

  2. Linux 底下使用C语言的 单链表 ,双链表,二叉树 读取文件,并排序

    直接上代码 单链表Linux读文件排序: 双链表Linux读取文件排序: 二叉树LinuX读取文件并排序:

  3. C语言实现的单链表

    链表是一种线性表,但是并不是顺序存储,而是每个节点里面存储着下一个节点的指针,把存储数据元素的数据串链起来. 单链表的基本实现: typedef int DataType;//定义单链表typedef ...

  4. C++ 数据结构学习二(单链表)

    模板类 //LinkList.h 单链表#ifndef LINK_LIST_HXX#define LINK_LIST_HXX#include <iostream>using namespa ...

  5. C语言 - 栈和单链表的实现

    单链表:linkList.h linkList.c #ifndef LINKLIST_H_INCLUDE #define LINKLIST_H_INCLUDE #include <Windows ...

  6. C语言版本:单链表的实现(优化版本)

    未优化版本:http://www.cnblogs.com/duwenxing/p/7569376.html slist.h #ifndef __SLIST_H__ #define __SLIST_H_ ...

  7. C语言版本:单链表的实现

    slist.h #ifndef __SLIST_H__ #define __SLIST_H__ #include<cstdio> #include<malloc.h> #inc ...

  8. c++学习之单链表以及常用的操作

    新学数据结构,上我写的代码. #include <iostream> #include <cstdlib> using namespace std; typedef int E ...

  9. c语言实现循环单链表

    //初始化 Node*InitList() { Node*head=(Node*)malloc(sizeof(Node)); head->next=NULL; head->data=-1; ...

随机推荐

  1. Github注册过程以及对管理软件的了解

    二.目前流行的源程序管理软件和项目管理软件主要有以下一些: 1.Visual Source Safe 优点:如果开发工具是VS.NET,用VSS较合适,方便,安装配置和使用都简单,版本控制简单,打la ...

  2. XSS零碎指南

    该文章是本人两天的学习笔记,共享出来,跟大家交流.知识比较零散,但是对有一定 JS 基础的人来说,每个小知识都有助于开阔你的 Hack 视角.首先声明,本文只是 XSS 攻击的冰山一角,读者自行深入研 ...

  3. [.net 面向对象编程基础] (20) LINQ使用

    [.net 面向对象编程基础] (20)  LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integr ...

  4. 关于Web开发里并发、同步、异步以及事件驱动编程的相关技术

    一.开篇语 我的上篇文章<关于如何提供Web服务端并发效率的异步编程技术>又成为了博客园里“编辑推荐”的文章,这是对我写博客很大的鼓励,也许是被推荐的原因很多童鞋在这篇文章里发表了评论,有 ...

  5. CSS media queries

    最近在做一些页面打印时的特殊处理接触到了media queries,想系统学习一下,在MOZILLA DEVELOPER NETWORK看到一篇文章讲的很不错,结合自己的使用总结一下. CSS2/me ...

  6. Canny算子边缘检测(cvCanny)

    Canny是常用的边缘检测方法,其特点是试图将独立边的候选像素拼装成轮廓. John Canny于1986年提出Canny算子,它与Marr(LoG)边缘检测方法类似,也属于是先平滑后求导数的方法. ...

  7. 消息队列-Kafka学习

    Kafka是一个分布式的消息队列,学习见Apache Kafka文档,中文翻译见Kafka分享,一个简单的入门例子见kafka代码入门实例.本文只针对自己感兴趣的点记录下. 1.架构 Producer ...

  8. linux下获取线程号

    #include <sys/syscall.h> pid_t gettid() { return syscall(SYS_gettid); }

  9. Java对象序列化---转载

    1.概念 序列化:把Java对象转换为字节序列的过程. 反序列化:把字节序列恢复为Java对象的过程. 2.用途 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个 ...

  10. WebApi系列~StringContent参数需要添加MetaType对象

    回到目录 对于api调用已经很多见了,在客户端去post一个请求到API服务端也是经常见到,但有时不注意,可能会引起一些问题,如为一个HttpContent参数进行赋值时,如果使用StringCont ...