C/C++单链表

先看例子,例1:定义链表

//定义链表
struct stu
{
  int name;
  int age;
  struct stu *next;
};

  

  用一组地址任意的存储单元存放线性表中的数据元素。:以元素(数据元素的映象) + 指针(指示后继元素存储位置)= 结点(表示数据元素 或 数据元素的映象)

不得不说百度解释的太官方了。

1.含义:多组不同类型的数的组合(数组存储是不连续的)

2.组成: 表头+结点+表尾

结点=数据域+指针域

表头:只有指针域 表尾:只有数据域

以前老师讲的还是不错的,影响深刻,不过好像还是有点云里雾里。

LZ所理解的链表

1.链表就是一系列结构体

2.这个结构体有一个特别的指针,类型为该结构体类型*。

结合例1来看很清晰,但前提是你一定要会结构体。

  正是如此,所以学链表之前一定先会结构体,而学会结构体之前一定要会用指针,又是指针。看似困难其实一点不难,一切复杂类型都是由基本类型构成的,链表也是如此,只不过起了一个时尚的名字。

例2:建立链表函数

//建立链表函数
struct stu * creat(int n)
{
struct stu *head,*pf,*pb;
int i,aa,bb;
for(i=0;i<n;i++)
{
pb=(struct stu *)malloc(sizeof(struct stu));
printf("请输入第%d个人的编号和年龄:",i+1,i+1);
scanf("%d %d",&aa,&bb);
pb->name=aa;
pb->age=bb;
if(i==0)
pf=head=pb;
else
pf->next=pb;
pf=pb;
}
pb->next=0;
return(head);
}

例2用到了指针函数,结构体指针,指针学好了理解起来应该不难。

从建立链表函数可以看出,

pb=(struct stu *)malloc(sizeof(struct stu));

这句为动态分配内存空间(上一篇文章简要介绍了它)。每新增一个结点,就分配一个sizeof(struct stu)大小的空间,按需分配,理想共产主义有木有。

附上完整的例子,例3:

 

例3包括了链表的定义,构造链表的方法,链表的调用方法等。光会写出例3一点用也没有,一定要弄清楚怎么定义\构造,怎么赋值,怎么使用,怎么得到具体某一个结点,结点元素的赋值,遍历方法,如何通过指针去访问。

--------------------------------------------- 十年寒窗无人问 三更灯火五更鸣 ---------------------------------------------
 
 
标签: 指针C/C++

C/C++单链表的更多相关文章

  1. 时间复杂度分别为 O(n)和 O(1)的删除单链表结点的方法

    有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点. 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和 ...

  2. 单链表的C++实现(采用模板类)

    采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作.  链表结构定义 定义单链表 ...

  3. Java实现单链表的各种操作

    Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...

  4. [LeetCode] Linked List Cycle II 单链表中的环之二

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...

  5. c++单链表基本功能

    head_LinkNode.h /*单链表类的头文件*/#include<assert.h>#include"compare.h"typedef int status; ...

  6. 单链表、循环链表的JS实现

    数据结构系列前言: 数据结构作为程序员的基本知识,需要我们每个人牢牢掌握.近期我也展开了对数据结构的二次学习,来弥补当年挖的坑......   当时上课的时候也就是跟着听课,没有亲自实现任何一种数据结 ...

  7. C代码实现非循环单链表

    C代码实现非循环单链表, 直接上代码. # include <stdio.h> # include <stdlib.h> # include <malloc.h> ...

  8. 分离的思想结合单链表实现级联组件:CascadeView

    本文介绍自己最近做省市级联的类似的级联功能的实现思路,为了尽可能地做到职责分离跟表现与行为分离,这个功能拆分成了2个组件并用到了单链表来实现关键的级联逻辑,下一段有演示效果的gif图.虽然这是个很常见 ...

  9. 数据结构:单链表结构字符串(python版)添加了三个新功能

    #!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...

  10. 数据结构:单链表结构字符串(python版)改进

    此篇文章的replace实现了字符串类的多次匹配,但依然有些不足. 因为python字符串对象为不变对象,所以replace方法并不修改原先的字符串,而是返回修改后的字符串. 而此字符串对象时用单链表 ...

随机推荐

  1. sql server int 列 NULLIF,isnull 判断是0还是1 ,如果是0就变成1

    SELECT ISNULL(NULLIF(col1,0),1) ISNULL:  第一个表达式 是 null 返回 第二个表达式,否则 返回 第一个 , ISNULL(表达式1,表达式2) if(表达 ...

  2. Yii Framework2.0开发教程(10)配合mysql数据库实现用户登录

    1.首先在mysql创建一个存用户的表格 create table test_user ( user_id bigint(20) unsigned not null auto_increment co ...

  3. The Swift Programming Language-官方教程精译Swift(6)控制流--Control Flow

    Swift提供了类似C语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行不同代码分支的if和switch语句,还有控制流程跳转到其他代码的break和continu ...

  4. uptime命令具体解释——linux性能分析

    基本使用: uptime [-V] 实际分析: 这里因为命令比較简单,所以我们不进行具体地介绍.但越是简单的命令,就越是好用方便.像之前百度面试运维的时候,面试管问我哪个命令能够看得到系统负载.我立即 ...

  5. Android分析应用程序的构建过程

    为了方便Android应用开发要求我们Androidproject编制和包装有了更深入的了解,例如,我们知道这是做什么的每一步,境和工具.输入和输出是什么.等等. 在前文<命令行下Android ...

  6. qq音乐的歌词接口中例如&#58,&#46的特殊符号编码使用js进行转义

    从qq音乐的歌词接口中得到这样的代码 jsonp11({"retcode":"0","code":"0","s ...

  7. Scala是一门现代的多范式编程语言

    Scala是一门现代的多范式编程语言 Scala是一门现代的多范式编程语言,志在以简练.优雅及类型安全的方式来表达常用编程模式.它平滑地集成了面向对象和函数语言的特性. Scala是面向对象的:Sca ...

  8. oracle 表导入到powerDesigner 中

    最近不忙,之前一直是用powerDesigner看表结构,还没自己导入过,今天试试 oracle 表导入到powerDesigner 中步骤: 1.File--->reverse Enginne ...

  9. Json.Net6.0

    Json.Net6.0入门学习试水篇   前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表 ...

  10. EntityFramework中支持BulkInsert扩展

    EntityFramework中支持BulkInsert扩展 本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 前言 很显然,你应该不至于使用 Ent ...