刚开始学数据结构,记录一下
本文内容都是由帅气的皮皮学长指导教学,基本上是原文复刻,大佬们轻喷。
#include<iostream>
using namespace std;
//带头结点单链表//
typedef struct NodeList{//属性集合(结点)
//数据
int element;
//指向下一个结点指针
struct NodeList* next;
}node,*linklist;
//等同于: typedef struct NodeList* linklist;
//linklist与node*等价,都是用来声明结构体指针变量的
//linklist强调该指针标记标记了一个单链表
//node* 强调该指针标记了一个结点
/////操作:初始化,增删改查
linklist initlist()
{//初始化带头结点的单链表
linklist l=(linklist)malloc(sizeof(node));//l指向头结点
if(l==NULL)//malloc 需要判断 内存分配是否成功
{
printf("内存分配不成功\n");//内存分配不成功
}
else{//分配成功
l->next=NULL;
}
return l;
}
void head_insert(int k,linklist l)
{//头插法添加元素
node* s=(node*)malloc(sizeof(node));
s->element=k;//数据写入结点
s->next=l->next;
l->next=s;
//尾插同学自己写
}
//中间插入:先找到位置,再插入
node* find(int k,linklist l)
{//查询k所在的结点
//查询有两种,一种是找到这个结点。另一种是找到这个结点在链表中的哪个位置
node* p=l->next;//第一个元素
while(p!=NULL&&p->element !=k)
{
p=p->next