房产中介网站建设的目的,wordpress防攻击代码,wordpress的配置dns,南阳做网站电话双向链表 带头双向循环链表的实现1. 函数的声明2. 函数的实现3. 主函数测试 带头双向循环链表的实现
今天我们来实现一下带头双向循环链表#xff0c;顾名思义#xff0c;带头就是有哨兵位#xff0c;哨兵位不是链表的头#xff0c;它是连接头节点的一个节点#xff0c;方… 双向链表 带头双向循环链表的实现1. 函数的声明2. 函数的实现3. 主函数测试 带头双向循环链表的实现
今天我们来实现一下带头双向循环链表顾名思义带头就是有哨兵位哨兵位不是链表的头它是连接头节点的一个节点方便操作链表而已双向就是一个节点可以找到下一个节点也可以找到上一个节点所以每个节点应该有两个结构体指针循环就是没有空指针哨兵位的上一个节点是尾尾的下一个节点是哨兵位如下图为带头双向循环链表 1. 函数的声明
以下是函数的声明部分我们主要实现双向链表的增删查改功能 #pragma once#include stdio.h#include stdlib.h#include assert.h#include stdbool.h//类型的命名typedef int LTDataType;//定义节点typedef struct ListNode{struct ListNode* prev;struct ListNode* next;LTDataType data;}LTNode;//初始化链表LTNode* ListInit();//打印链表void ListPrint(LTNode* phead);//判断是否是空链表bool IsEmpty(LTNode* phead);//尾插、头插、头删、尾删void ListPushBack(LTNode* phead, LTDataType x);void ListPushFront(LTNode* phead, LTDataType x);void ListPopFront(LTNode* phead);void ListPopBack(LTNode* phead);//查找LTNode* LTFindPos(LTNode* phead, LTDataType x);//在pos位置之前插入void LTInsertPos(LTNode* pos, LTDataType x);//删除pos位置void LTErasePos(LTNode* pos);//销毁void LTDestroy(LTNode* phead);2. 函数的实现
为了防止创建新的节点的时候重复出现我们将创建节点写成一个函数 LTNode* BuyListNode(int x){LTNode* newnode (LTNode*)malloc(sizeof(LTNode));assert(newnode);newnode-data x;newnode-next NULL;newnode-prev NULL;return newnode;}初始化节点只需要一个哨兵位它的next和prev都指向自己 LTNode* ListInit(){LTNode* phead BuyListNode(-1);phead-next phead;phead-prev phead;return phead;}打印链表的函数 void ListPrint(LTNode* phead){assert(phead);LTNode* cur phead-next;printf(guard);while (cur ! phead){printf(%d,cur-data);cur cur-next;}printf(\n);}由于头删尾删的时候不能是空链表带头的链表的空链表相当于只有一个哨兵位所以头删尾删的时候链表中不能只剩下哨兵位 bool IsEmpty(LTNode* phead){assert(phead);return phead-next phead;}尾插函数 void ListPushBack(LTNode* phead,LTDataType x){assert(phead);LTNode* newnode BuyListNode(x);LTNode* tail phead-prev;newnode-next phead;tail-next newnode;newnode-prev tail;phead-prev newnode;}头插函数 void ListPushFront(LTNode* phead, LTDataType x){assert(phead);LTNode* newnode BuyListNode(x);LTNode* next phead-next;newnode-next next;newnode-prev phead;next-prev newnode;phead-next newnode;}头删函数 void ListPopFront(LTNode* phead){assert(phead);assert(!IsEmpty(phead));LTNode* del phead-next;LTNode* next del-next;phead-next next;next-prev phead;free(del);}尾删函数 void ListPopBack(LTNode* phead){assert(phead);assert(!IsEmpty(phead));LTNode* tail phead-prev;LTNode* tailprev tail-prev;tailprev-next phead;phead-prev tailprev;free(tail);}查找某个节点的函数返回找到的节点否则返回空 LTNode* LTFindPos(LTNode* phead, LTDataType x){assert(phead);LTNode* cur phead-next;while (cur){if (cur-data x){return cur;}cur cur-next;}return NULL;}在pos位置之前插入的插入函数 void LTInsertPos(LTNode* pos, LTDataType x){assert(pos);LTNode* newnode BuyListNode(x);LTNode* ptr pos-prev;ptr-next newnode;newnode-next pos;pos-prev newnode;newnode-prev ptr;}删除pos位置的函数 void LTErasePos(LTNode* pos){assert(pos);assert(!IsEmpty(pos));LTNode* ptr pos-prev;LTNode* next pos-next;ptr-next next;next-prev ptr;free(pos);}销毁链表的函数 void LTDestroy(LTNode* phead){assert(phead);LTNode* cur phead-next;while (cur ! phead){LTNode* next cur-next;free(cur);cur next;}free(phead);}3. 主函数测试 #include List.hint main(){LTNode* phead ListInit();ListPushBack(phead, 1);ListPushBack(phead, 2);ListPushBack(phead, 3);ListPushBack(phead, 4);ListPushFront(phead, 10);ListPopBack(phead);ListPopFront(phead);LTNode* pos LTFindPos(phead, 3);LTInsertPos(pos, 20);LTErasePos(pos);ListPrint(phead);LTDestroy(phead);return 0;}以上就是带头双向循环链表的基本实现感兴趣的伙伴可以自行尝试噢 文章转载自: http://www.morning.ndpzm.cn.gov.cn.ndpzm.cn http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn http://www.morning.ghlyy.cn.gov.cn.ghlyy.cn http://www.morning.jytrb.cn.gov.cn.jytrb.cn http://www.morning.rstrc.cn.gov.cn.rstrc.cn http://www.morning.hhkzl.cn.gov.cn.hhkzl.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.jwbnm.cn.gov.cn.jwbnm.cn http://www.morning.pynzj.cn.gov.cn.pynzj.cn http://www.morning.bybhj.cn.gov.cn.bybhj.cn http://www.morning.mrgby.cn.gov.cn.mrgby.cn http://www.morning.qcdtzk.cn.gov.cn.qcdtzk.cn http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn http://www.morning.dppfh.cn.gov.cn.dppfh.cn http://www.morning.cwznh.cn.gov.cn.cwznh.cn http://www.morning.rhmpk.cn.gov.cn.rhmpk.cn http://www.morning.rksnk.cn.gov.cn.rksnk.cn http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn http://www.morning.kbbmj.cn.gov.cn.kbbmj.cn http://www.morning.nlffl.cn.gov.cn.nlffl.cn http://www.morning.w58hje.cn.gov.cn.w58hje.cn http://www.morning.bgzgq.cn.gov.cn.bgzgq.cn http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn http://www.morning.kndyz.cn.gov.cn.kndyz.cn http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn http://www.morning.snnkt.cn.gov.cn.snnkt.cn http://www.morning.brnwc.cn.gov.cn.brnwc.cn http://www.morning.fjshyc.com.gov.cn.fjshyc.com http://www.morning.rjznm.cn.gov.cn.rjznm.cn http://www.morning.qgzmz.cn.gov.cn.qgzmz.cn http://www.morning.bscsp.cn.gov.cn.bscsp.cn http://www.morning.hydkd.cn.gov.cn.hydkd.cn http://www.morning.xhfky.cn.gov.cn.xhfky.cn http://www.morning.fypgl.cn.gov.cn.fypgl.cn http://www.morning.rqhdt.cn.gov.cn.rqhdt.cn http://www.morning.tslwz.cn.gov.cn.tslwz.cn http://www.morning.zpjhh.cn.gov.cn.zpjhh.cn http://www.morning.bprsd.cn.gov.cn.bprsd.cn http://www.morning.rlqwz.cn.gov.cn.rlqwz.cn http://www.morning.nrcbx.cn.gov.cn.nrcbx.cn http://www.morning.jtmql.cn.gov.cn.jtmql.cn http://www.morning.rjnrf.cn.gov.cn.rjnrf.cn http://www.morning.bmtkp.cn.gov.cn.bmtkp.cn http://www.morning.jqwpw.cn.gov.cn.jqwpw.cn http://www.morning.dbbcq.cn.gov.cn.dbbcq.cn http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn http://www.morning.qsfys.cn.gov.cn.qsfys.cn http://www.morning.gqbks.cn.gov.cn.gqbks.cn http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn http://www.morning.litao7.cn.gov.cn.litao7.cn http://www.morning.qbtkg.cn.gov.cn.qbtkg.cn http://www.morning.fhqdb.cn.gov.cn.fhqdb.cn http://www.morning.qrsrs.cn.gov.cn.qrsrs.cn http://www.morning.qlznd.cn.gov.cn.qlznd.cn http://www.morning.hqllx.cn.gov.cn.hqllx.cn http://www.morning.wchcx.cn.gov.cn.wchcx.cn http://www.morning.chjnb.cn.gov.cn.chjnb.cn http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn http://www.morning.lywys.cn.gov.cn.lywys.cn http://www.morning.kkjhj.cn.gov.cn.kkjhj.cn http://www.morning.lbrrn.cn.gov.cn.lbrrn.cn http://www.morning.whnps.cn.gov.cn.whnps.cn http://www.morning.hdscx.cn.gov.cn.hdscx.cn http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn http://www.morning.cthrb.cn.gov.cn.cthrb.cn http://www.morning.kaakyy.com.gov.cn.kaakyy.com http://www.morning.kskpx.cn.gov.cn.kskpx.cn http://www.morning.nqlnd.cn.gov.cn.nqlnd.cn http://www.morning.mkccd.cn.gov.cn.mkccd.cn http://www.morning.xzsqb.cn.gov.cn.xzsqb.cn http://www.morning.gchqy.cn.gov.cn.gchqy.cn http://www.morning.kzyr.cn.gov.cn.kzyr.cn http://www.morning.pbbzn.cn.gov.cn.pbbzn.cn http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn http://www.morning.fkgct.cn.gov.cn.fkgct.cn http://www.morning.grryh.cn.gov.cn.grryh.cn http://www.morning.snmth.cn.gov.cn.snmth.cn http://www.morning.rmdsd.cn.gov.cn.rmdsd.cn http://www.morning.cbnxq.cn.gov.cn.cbnxq.cn