一.创建空链表=======================================================
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 两个指针接着往后走 直到快的为空
十二.选择排序
让第一个为最小值
后面如果有比它小的 使其成为新的最小值 一直往后走