C语言学习016:单链表

 1 #include <stdio.h>
 2
 3 //定义一个链表,链表是一种递归结构,在定义的时候必须要给结构起一个名字
 4 typedef struct folder{
 5     int level;
 6     char* filename;
 7     struct folder* child;//通过指针链接下一个结构
 8 }folder;
 9
10 int main(){
11     folder first={1,"first",NULL};
12     folder second={2,"second",NULL};
13     folder thread={3,"thread",NULL};
14     first.child=&second;
15     second.child=&thread;
16     folder* i=&first;
17     for(;i!=NULL;i=i->child){
18         printf("%s level is %i \n",i->filename,i->level);
19     }
20     return 0;
21 }

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

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

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

时间: 2024-12-18 15:30:46

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

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

用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表).结点的查找.删除.排序.打印输出.逆置.链表销毁等基本操作. IDE:vs2013 具体实现代码如下: [cpp] view plaincopy #include "stdafx.h" #include <malloc.h> #include <iostream> using namespace std; typedef struct Lnode { int data; struct 

数据结构学习之单链表基本操作

数据结构学习之单链表基本操作 0x1 前言 今天实验课,学习了下单链表的写法,这里记录下. 0x2 正文 题目要求如下: 本实验的单链表元素的类型为char,完成如下实验要求: (1)初始化单链表h (2)采用尾插法依次插入a.b.c.d.e (3)输出单链表h (4)输出单链表h的长度 (5)判断单链表h是否为空 (6)输出单链表h的第3个元素 (7)输出元素a的逻辑位置 (8)在第4个元素位置上插入元素f (9)输出单链表h (10)删除单链表h的第3个元素 (11)输出单链表h (12)释

C语言数据结构之单链表

链表由多个节点构成,节点之间可以灵活的插入.删除.链表以结构体的自引用原理,可以在内存中以不连续的方式动态分配内存来存储数据,这样的结构体就是链表的一个节点. 一个节点分为两个域:一个是数据域,一个是指针域,这方便链表在存储数据的同时可以方便地找到下一个节点. 相比于数组:数组定义相对简单些,是以连续的内存存储数据,在定义时就确定了长度,这样相比于链表的动态存储,数组就存在有可能数据不够长或内存浪费的缺点. 对于单链表,在此从建立链表开始,实现链表的增添.删除和输出链表内容.由于链表是动态存储,

C语言:【单链表】删除一个无头单链表的非尾节点

#include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int DataType; typedef struct SListNode {     DataType data;     struct SListNode* next;  }SListNode; SListNode* BuyNode( DataType x) {     SListNode* next = (SListNode*)mall

C语言:【单链表】逆置反转单链表

#include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int DataType; typedef struct SListNode {     DataType data;     struct SListNode* next; }SListNode; SListNode* BuyNode(DataType x) {     SListNode* next = (SListNode*)malloc

C语言:【单链表】查找单链表的中间节点,要求只能遍历一次

#include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int DataType; typedef struct SListNode {     DataType data;     struct SListNode* next; }SListNode; SListNode* BuyNode(DataType x) {     SListNode* next = (SListNode*)malloc

【C语言数据结构】单链表

LinkList.h #ifndef LINK_LIST_H #define LINK_LIST_H //链表节点 typedef struct _LinkListNode {     struct _LinkListNode *next; }LinkListNode; //单链表 typedef void LinkList; /*  * 创建单链表  * @return 返回单链表的指针  */ LinkList* LinkList_Create(); /*  * 销毁单链表  * @para

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

模板类 //LinkList.h 单链表#ifndef LINK_LIST_HXX#define LINK_LIST_HXX#include <iostream>using namespace std; template<class T>struct Node{ T data; Node * next;}; template<class T>class LinkList{ public: LinkList(); //无参构造函数,建立只有头结点的空链表 LinkList

数据结构之---c语言实现循环单链表操作

//=========杨鑫========================// //循环单链表的实现 #include <stdio.h> #include <stdlib.h> typedef int ElemType; //定义结点类型 typedef struct Node { ElemType data; struct Node *next; }Node,*LinkedList; int count = 0; //1.单循环链表的初始化 LinkedList init_ci