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:
C/C++单链表C/C++单链表

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

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

//建立链表函数
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);
}

//打印函数
void print(int n,struct stu *a)
{
    int i;
    for(i=0;i<n;i++)
    {
    printf("Name=%dtAge=%dn",*a,a->age);
    a=a->next;
    }
}

//主函数
int main()
{
    int n;
    struct stu *a;
    printf("请输入链表的长度:");
    scanf("%d",&n);
    a=creat(n);
    print(n,a);
    system("pause");
    return 0;
}

View Code


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

原文链接: https://www.cnblogs.com/anwcq/p/C_lianbiao.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/97293

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午4:10
下一篇 2023年2月10日 上午4:10

相关推荐