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. php设计模式(一):简介及创建型模式

    我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式. 一.设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用.容易被他人理解的.可靠的代码设计经验的总结. ...

  2. c#登录时保存账号密码到cookie

    登陆界面有用户名.密码输入框,一个’记住账号密码‘的复选框. 1.登录时,勾选‘记住账号密码‘复选框,则会把用户名密码保存在客户端cookie里,保存时间为最大值(直到用户清除浏览器缓存或者取消勾选’ ...

  3. 图文详解ReSharper 8.1功能变化

    ReSharper 8.1版本已经发布有段时间了,被广大开发者购买和试用,今天小编就ReSharper 8.1功能变化就行详细的解说. 支持TypeScript 突出了重构(重命名,引入变量).导航. ...

  4. vim的复制粘贴小结

    vim帮助文档里与粘贴板有关的内容如下: vim有12个粘贴板,分别是0.1.2.….9.a.“.+:用:reg命令可以查看各个粘贴板里的内容.在vim中简单用y只是复制到“(双引号)粘贴板里,同样用 ...

  5. [Android 性能优化系列]降低你的界面布局层次结构的一部分

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...

  6. leetcode第27题--Implement strStr()

    Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if need ...

  7. 使用 Visual C# .NET 生成 Office COM 外接程序

    Microsoft Office XP 和 Microsoft Office 2003 都支持一种新的统一的设计结构,这种结构用于生成应用程序外接程序以增强和控制 Office 应用程序.这些外接程序 ...

  8. 附加没有LDF的数据库文件

    原文:附加没有LDF的数据库文件 如果你只下载了数据文件,没有LDF文件,那么附加的时候选择使用ATTACH_REBUILD_LOG. 命令类似: USE [master] GO CREATE DAT ...

  9. 我的Android 4 学习系列之Intent 和 Broadcast Reciever

    目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending ...

  10. php-fpm介绍及配置

    php-fpm是什么 全称是php fastcgi process manager即php fastcgi进程管理器,相比fastcgi静态的唤起cgi,fpm能根据访问的压力动态的唤起cgi进程和销 ...