文章目录
目录
前言
学习了好久的数据结构了,但是自我感觉还是好菜(雾),写这篇文章主要是因为,学完树以后,去做单链表的题,发现又忘记单链表怎么写了,真的很痛苦,这次的文章主要实现单链表的增加,插入,删除,查询,逆转,长度,打印这些功能
一、带头节点的单链表操作集
-
创建链表头
//声明结构体,即链表节点
typedef struct _Link{
int Data;
struct _Link *next;
}Link;
//创建一个带头节点的链表
Link *CreatLink()
{
Link *head=(Link *)malloc(sizeof(Link));
head->next=NULL;
return head;
}
测试代码
int main()
{
//创建链表
Link *L;
L=CreatLink();
return 0;
}
-
在链表尾端增加元素
//向链表尾端插入元素
void Attach(Link **rear, int num)
{
//声明一个节点用来存放要插入的元素
Link *temp=(Link *)malloc(sizeof(Link));
temp->Data=num;
temp->next=NULL;
//让新节点链接上原尾节点
(*rear)->next=temp;
//尾节点更新为现链表尾端
(*rear)=temp;
}
测试代码
int main()
{
//创建链表
Link *L,*rear;
L=CreatLink();
rear=L;
int n,num;
scanf("%d",&n);
for(int i=0; i<n; i++){
scanf("%d",&num);
//传入指针的地址,用来改变rear经过函数操作后主函数的rear
Attach(&rear,num);
}
return 0;
}