链表(1)

一、定义: 

链表是一种物理存储单元上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

二、链表的组成

链表有两部分组成 1. 数据域  2.指针域

一般的在头部都会有一个指针指向头部 表示链表的开头(这里用head表示)

一般的在尾部都会有一个NULL代表链表的结束

三、代码实现

(1)、创建一个链表结构:

 

typedef struct link{
    int x;
    struct link *nect;
}link;

在这里 typedef 表示将结构改名为 link

在其结构里 有两个成员 表示的就是 数据域和指针域 (分别是 x 和 nect 指针)

 

(2)、初始化链表 :

void chushihua(struct link* link1){
    link1->nect=NULL;
    head=NULL;
}

链表在刚开始时没有任何节点因此haed=NULL nect也只能指向NULL

 (3)、插入元素(头插法):

#include<bits/stdc++.h>
using namespace std;
typedef struct link{
    int x;
    struct link *nect;
}link;
struct link *head;
void chushihua(struct link* link1){
    link1->nect=NULL;
}
void insterlink(struct link *link1,int a){
    struct link *temp = (link*)malloc(sizeof(struct link)); //创建一个新的容器用来存插入的数
    temp->x=a;
    temp->nect = head;
    head = temp;
}
void printflink(){
    struct link* temp=head;
    while(temp!=NULL)
    {
        printf("%d ",temp->x);
        temp=temp->nect;
    }

}
int main(){
    link link1;
    head=NULL;
    chushihua(&link1);
    insterlink(&link1,1);// 1
    insterlink(&link1,2);// 2 1
    insterlink(&link1,3);// 3 2 1
    printflink();
}

 根据图可以知道大致原理 因为head永远指向第一个因此需要考虑到temp->nuLL 直接:

    temp->nect = head;
    head = temp;

便可

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值