单向链表的基本操作以及复杂操作

一.创建空链表=======================================================

1.malloc创建堆区空间

2.赋值=============================================================

二.头插法

1.申请空间

2.将Data初始化

3.将pNext初始化(和后面连起来)

4.将头结点的pNext指向新申请节点(和前面连起来)

三.遍历==============================================================

pTmpNode = Phead->pNext;

while(pTmpNode !=NULL)

{printf(pTmpNode->Data),,pTmpNode = pTmpNode->pNext}

四.修改=============================================================

遍历寻找olddata后改为newdata

五.尾插==============================================================

1.申请空间

2.对新内容赋值

3.先让第一个指针跑到链表末尾pTmpNode = pTmpNode->pNext

4.连接 pTmpNode->pNext = pNewNode

六.删除链表节点========================================================

1.两个指针一前(找要删除的位置)一后(记录上一个节点位置)

2.找到要删除的数据

pPreNode->pNext = pTmpNode->pNext

free(pTmpNode);

pTmpNode = pPreNode->pNext

3.如果没找到 俩个指针继续一前一后往后走p = p->pnext

七.销毁链表(传入二级指针)===========================================

1.两个指针一前(free)一后(往后走)

八.找到中间节点位置

1.两个指针一快(走两步)一慢(走一步)

2.当快指针走到末尾时,慢指针的位置就是中间节点的位置

九.找到链表倒数第k个节点

1.快指针先走k次

2.慢指针与快指针共同前进(都是一步)

3.当快指针到末尾时,慢指针的位置就是要找的位置

十.倒置链表

pTmpNode = pHead->pNext

pHead->pNext = NULL;

pInsertNode = pTmpNode;

while(pTmpNode !=NULL)

{

pTmpNode = pTmpNode->pNext;

pInsertNode->pNext = pHead->pNext;

pHead->pNext = pInsertNode;

pInsertNode = pTmpNode;

}

十一.冒泡排序

如果链表没有节点或者只有一个节点返回0

pHead->pNext == NULL || pHead->pNext->pNext == NULL

交换前后数据data  两个指针接着往后走 直到快的为空

十二.选择排序

让第一个为最小值

后面如果有比它小的 使其成为新的最小值 一直往后走

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值