单项链表的实现(尾插法和头插法)

链表是一种不连续的线性表,在内存中表现为1:1的联系方式。

链表是由一个个节点组成的,节点分为两部分:一部分是数据区域,一部分是指针域。

记住实现链表有两个步骤:

1.分配空间

2.产生联系(每个节点的指针指向下一个节点)

 

1.尾插法:每次将新来的空间放入到尾节点之后,头节点保持不变

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

struct nd;
struct student;
typedef struct student dtype;
typedef struct nd node;
typedef struct nd* pnode;

struct student
{
        char name[10];
        int id;
};
struct nd
{
        dtype data;
        pnode next;
};

bool insert(pnode* pph,dtype data)
{
        pnode pnew=malloc(sizeof(note));
        if(NULL==pnew)
                return false;
        pnew->data=data;
        pnew->next=NULL;
        if(*pph==NULL)
                *pph=pnew;
        else
        {
                pnode prear=*pph;
                while(prear->next!=NULL)prear=prear->next;
                prear->next=pnew;
        }
        return true;
}

头插法:每次将新空间放到头节点之前,生成新的头结点。

bool insert(node** pph,dtype data)
{
        node* pnew=malloc(sizeof(node));
        if(pnew==NULL)
                return false;
        pnew->data=data;
        pnew->next=*pph;
        *pph=pnew;
        return true;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值