写这篇是为了给还在为理解链表而发愁的同学们节约时间,我在学习链表的时候也是一头雾水,尽管书上,视频里都有讲解,但是你们有没有发现都是狗屁官方语言,对帮助理解没有多大作用,许多其他的学习也类似就不说编程了,作为一名读过多年书的你是不是也这样感觉,那这次我将源代码全部写下来,注释也是用最好理解的白话写的希望能帮助到你。
#include "stdafx.h"
#include"iostream"
using namespace std;
struct Node
{
int data;
Node*next;
};
Node*Phead=NULL;//一开始没有节点 先设定一个空节点作为头节点 此头节点 数据data=NULL,next=NULL;
void Addhead(int d)//头插法
{
Node*p=(Node*)(malloc(sizeof(Node)));
p->data=d;
p->next=Phead;//{ 将现有头的NULL赋值给该新申请的next,使之为空即使该数据成为尾结点(仅仅对插入的第一个数而言)},但而后插入的数据的next指向上一个数据,因为Phead值不再为NULL这也是一不小心最不容易理解的地方
Phead=p;//将现申请的空间赋给头节点;使之下一次访问头结点从该数据开始,形成链表,即使该节点成为头结点
}
void Addtail(int d)//尾插入
{ Node*p=Phead;
while(p->next!=NULL)//寻找尾结点&#