1.单链表操作
1.判空
int IsEmptyList(LinkList L)
{
return (L->next == NULL ? 1 : 0);
}
2.删除
添加一个标志位flag用于判断删除的数据是否存在
int DeleteDataList(LinkList L, ElemType data)
{
LinkList p = L, q; // p指向头结点
int flag = 0;
if (IsEmptyList(L))
{
return -1; //空链表返回-1
}
while (p->next != NULL)
{
if (p->next->data == data)
{
q = p->next;
p->next = q->next;
free(q);
q = NULL;
flag = 1;
}
else
{
p = p->next;
}
}
if (flag == 0)
{
return -2;
}
else
{
printf("deletd %d success!\n", data);
}
return 0;
}
3.逆序
首结点data域置为NULL,从首节点后面一个元素开始遍历插入头结点后面。
void ReserveList(LinkList L)
{
LinkList p = L->next->next, q;
L->next->next = NULL;
while (p != NULL)
{
q = p->next;
p->next = L->next;
L->next = p;
p = q;
}
}
4.清空
从头结点开始遍历释放
void ClearList(LinkList L)
{
LinkList p = L, q;
while (p != NULL)
{
q = p->next;
free(p);
p = q;
}
}
2.单向循环链表
就用一句话总结:单链表尾结点的指针域存放头节点的地址,这种首尾相连的链表,叫做单向循环链表。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦