链表总结

本次总结仅限于对单链表的总结,后续会对双向链表、循环链表等总结。

大多数老师都统一口径说链表这一部分很简单,但是个人对链表的理解实在太差,还是无法理解链表代码所表示的意思和功能。

所以在此粗略总结。

链表是由节点组成,所谓节点就是一个结构体,这个结构体包括两部分:数据域和指针域。

指针域用来指向下一个节点的首地址。

——————————————————————————————————————————

结构体一般定义如下:

struct node{ //而没有typedef,就应为struct node *p,*head;
int data;
struct node *next;
};
或者
typedef struct node{                     //加上typedef的作用大概就是,定义node类型。
int data; // 例如这样:node *head,*q;
struct node *next;
}node;

——————————————————————————————————————————

单链表基本操作(以C语言代码为例):

一、单链表的初始化

    head=(struct N*)malloc(sizeof(struct N));  
    head->n=NULL;  

二、创建单链表

①前插法创建单链表
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL; //建立一个带头结点的空链表
for(i=0;i<n;i++){
q=(struct node *)malloc(sizeof(struct node)); //生成新结点*p
scanf("%d",&q->data); //输入元素值赋给新结点*q的数据域
q->next=head->next;
head->next=q; //将新结点*q插入到头结点之后
}


②后插法创建单链表
head=(node *)malloc(sizeof(node));
head->next =NULL; //建立一个带头结点的空链表
tail=head; //尾指针tail指向头结点
for(i=1;i<=n;i++)
{
p=(node *)malloc(sizeof(node)); //生成新结点
scanf("%d",&p->date); //输入元素值赋给新结点*p的数据域
p->next=NULL;
tail->next=p; //将新结点*p插入尾结点*tail之后
tail=p; //tail指向新的尾结点*p
}

—————————————————————————————————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值