网站制作公司北京华网,建设银行的英语网站,网站开发合同官司,wordpress 音乐播放器双链表 1.双链表的实现1.1结口实现1.2申请结点1.3初始化双链表1.4打印双链表1.5尾插1.6尾删1.7头插1.8头删1.9计算大小1.10查找1.11pos位置插入1.12删除pos位置1.12删除双链表 全部码源 1.双链表的实现
1.1结口实现
#includestdio.h
#includestdlib.h
#inclu… 双链表 1.双链表的实现1.1结口实现1.2申请结点1.3初始化双链表1.4打印双链表1.5尾插1.6尾删1.7头插1.8头删1.9计算大小1.10查找1.11pos位置插入1.12删除pos位置1.12删除双链表 全部码源 1.双链表的实现
1.1结口实现
#includestdio.h
#includestdlib.h
#includeassert.htypedef int LTDateType;
typedef struct ListNode
{struct ListNode* next;struct ListNode* prev;LTDateType date;
}LTNode;//创造结点
LTNode* BuyLTNode(LTDateType x);//初始化双链表
LTNode* LTInit();//打印双链表
void LTPrint(LTNode* phead);//尾插
void LTPushBack(LTNode* phead, LTDateType x);//尾删
void LTPopBack(LTNode* phead);//头插
void LTPushFront(LTNode* phead, LTDateType x);//头删
void LTPopFront(LTNode* phead);//计算
int LTSize(LTNode* phead);//查找
LTNode* LTFind(LTNode* phead, LTDateType x);//pos位置插入
void LTInsert(LTNode* pos, LTDateType x);//删除pos位置
void LTErase(LTNode* pos);//销毁双链表
void LTDestroy(LTNode* phead);1.2申请结点
//创造结点
LTNode* BuyLTNode(LTDateType x)
{LTNode* node (LTNode*)malloc(sizeof(LTNode));if (node NULL){perror(malloc fail);exit(-1);}node-date x;node-next NULL;node-prev NULL;return node;
}1.3初始化双链表
//初始化双链表
LTNode* LTInit()
{LTNode* phead BuyLTNode(0);phead-next phead;phead-prev phead;return phead;
}1.4打印双链表
//打印双链表
void LTPrint(LTNode* phead)
{assert(phead);printf(phead);LTNode* cur phead-next;while (cur ! phead){printf(%d, cur-date);cur cur-next;}printf(\n);
}1.5尾插 //尾插
void LTPushBack(LTNode* phead, LTDateType x)
{assert(phead);LTNode* tail phead-prev;LTNode* newnode BuyLTNode(x);newnode-prev tail;tail-next newnode;newnode-next phead;phead-prev newnode;
}1.6尾删 //尾删
void LTPopBack(LTNode* phead)
{assert(phead);assert(phead-next ! phead);LTNode* tail phead-prev;LTNode* tailPrev tail-prev;free(tail);tailPrev-next phead;phead-prev tailPrev;
}1.7头插 //头插
void LTPushFront(LTNode* phead, LTNode* x)
{assert(phead);LTNode* newnode BuyLTNode(x);LTNode* first phead-next;phead-next newnode;newnode-prev phead;newnode-next first;first-prev newnode;
}1.8头删 //头删
void LTPopFront(LTNode* phead)
{assert(phead);assert(phead-next ! phead);LTNode* first phead-next;LTNode* second first-next;free(first);phead-next second;second-prev phead;
}1.9计算大小
//计算
int LTSize(LTNode* phead)
{assert(phead);int size 0;LTNode* cur phead-next;while (cur ! phead){size;cur cur-next;}return size;
}1.10查找
//查找
LTNode* LTFind(LTNode* phead, LTDateType x)
{assert(phead);LTNode* cur phead-next;while (cur ! phead){if (cur-date x)return cur;cur cur-next;}return NULL;
}
1.11pos位置插入 //在pos位置插入
void LTInsert(LTNode* pos, LTDateType x)
{assert(pos);LTNode* posPrev pos-prev;LTNode* newnode BuyLTNode(x);posPrev-next newnode;newnode-prev posPrev;newnode-next pos;pos-prev newnode;
}1.12删除pos位置 //删除pos位置
void LTErase(LTNode* pos)
{assert(pos);LTNode* posNext pos-next;LTNode* posPrev pos-prev;free(pos);posPrev-next posNext;posNext-prev posPrev;
}1.12删除双链表
//销毁双链表
void LTDestroy(LTNode* phead)
{assert(phead);LTNode* cur phead-next;while (cur ! phead){LTNode* next cur-next;free(cur);cur cur-next;}free(phead);
}全部码源 List.h #includestdio.h
#includestdlib.h
#includeassert.htypedef int LTDateType;
typedef struct ListNode
{struct ListNode* next;struct ListNode* prev;LTDateType date;
}LTNode;//创造结点
LTNode* BuyLTNode(LTDateType x);//初始化双链表
LTNode* LTInit();//打印双链表
void LTPrint(LTNode* phead);//尾插
void LTPushBack(LTNode* phead, LTDateType x);//尾删
void LTPopBack(LTNode* phead);//头插
void LTPushFront(LTNode* phead, LTDateType x);//头删
void LTPopFront(LTNode* phead);//计算
int LTSize(LTNode* phead);//查找
LTNode* LTFind(LTNode* phead, LTDateType x);//pos位置插入
void LTInsert(LTNode* pos, LTDateType x);//删除pos位置
void LTErase(LTNode* pos);//销毁双链表
void LTDestroy(LTNode* phead);List.c #includeList.h//创造结点
LTNode* BuyLTNode(LTDateType x)
{LTNode* node (LTNode*)malloc(sizeof(LTNode));if (node NULL){perror(malloc fail);exit(-1);}node-date x;node-next NULL;node-prev NULL;return node;
}//初始化双链表
LTNode* LTInit()
{LTNode* phead BuyLTNode(0);phead-next phead;phead-prev phead;return phead;
}//打印双链表
void LTPrint(LTNode* phead)
{assert(phead);printf(phead);LTNode* cur phead-next;while (cur ! phead){printf(%d, cur-date);cur cur-next;}printf(\n);
}//尾插
void LTPushBack(LTNode* phead, LTDateType x)
{assert(phead);LTNode* tail phead-prev;LTNode* newnode BuyLTNode(x);newnode-prev tail;tail-next newnode;newnode-next phead;phead-prev newnode;
}//尾删
void LTPopBack(LTNode* phead)
{assert(phead);assert(phead-next ! phead);LTNode* tail phead-prev;LTNode* tailPrev tail-prev;free(tail);tailPrev-next phead;phead-prev tailPrev;
}//头插
void LTPushFront(LTNode* phead, LTNode* x)
{assert(phead);LTNode* newnode BuyLTNode(x);LTNode* first phead-next;phead-next newnode;newnode-prev phead;newnode-next first;first-prev newnode;
}//头删
void LTPopFront(LTNode* phead)
{assert(phead);assert(phead-next ! phead);LTNode* first phead-next;LTNode* second first-next;free(first);phead-next second;second-prev phead;
}//计算
int LTSize(LTNode* phead)
{assert(phead);int size 0;LTNode* cur phead-next;while (cur ! phead){size;cur cur-next;}return size;
}//查找
LTNode* LTFind(LTNode* phead, LTDateType x)
{assert(phead);LTNode* cur phead-next;while (cur ! phead){if (cur-date x)return cur;cur cur-next;}return NULL;
}//在pos位置插入
void LTInsert(LTNode* pos, LTDateType x)
{assert(pos);LTNode* posPrev pos-prev;LTNode* newnode BuyLTNode(x);posPrev-next newnode;newnode-prev posPrev;newnode-next pos;pos-prev newnode;
}//删除pos位置
void LTErase(LTNode* pos)
{assert(pos);LTNode* posNext pos-next;LTNode* posPrev pos-prev;free(pos);posPrev-next posNext;posNext-prev posPrev;
}//销毁双链表
void LTDestroy(LTNode* phead)
{assert(phead);LTNode* cur phead-next;while (cur ! phead){LTNode* next cur-next;free(cur);cur cur-next;}free(phead);
}test.c #includeList.hvoid TestList1()
{LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTPopBack(plist);LTPrint(plist);LTPushFront(plist, 20);LTPrint(plist);
}void TestList2()
{LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTPopFront(plist);LTPrint(plist);LTSize(plist);
}void TestList3()
{LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTNode* pos LTFind(plist, 3);LTInsert(pos, 20);LTPrint(plist);
}void TestList4()
{LTNode* plist LTInit();LTPushBack(plist, 1);LTPushBack(plist, 2);LTPushBack(plist, 3);LTPushBack(plist, 4);LTPushBack(plist, 5);LTPrint(plist);LTNode* pos LTFind(plist, 3);LTErase(pos);LTPrint(plist);
}int main()
{TestList4();return 0;
}不知不觉【数据结构初阶】双链表 以告一段落。通读全文的你肯定收获满满让我们继续为数据结构学习共同奋进!!! 文章转载自: http://www.morning.jyznn.cn.gov.cn.jyznn.cn http://www.morning.jcxyq.cn.gov.cn.jcxyq.cn http://www.morning.pwdrc.cn.gov.cn.pwdrc.cn http://www.morning.jbkcs.cn.gov.cn.jbkcs.cn http://www.morning.kqbwr.cn.gov.cn.kqbwr.cn http://www.morning.tlnkz.cn.gov.cn.tlnkz.cn http://www.morning.bbgr.cn.gov.cn.bbgr.cn http://www.morning.mm27.cn.gov.cn.mm27.cn http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn http://www.morning.rkck.cn.gov.cn.rkck.cn http://www.morning.tdmgs.cn.gov.cn.tdmgs.cn http://www.morning.pgmyn.cn.gov.cn.pgmyn.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.mzcrs.cn.gov.cn.mzcrs.cn http://www.morning.csgwd.cn.gov.cn.csgwd.cn http://www.morning.djpps.cn.gov.cn.djpps.cn http://www.morning.qkgwz.cn.gov.cn.qkgwz.cn http://www.morning.lmknf.cn.gov.cn.lmknf.cn http://www.morning.tbkqs.cn.gov.cn.tbkqs.cn http://www.morning.mhfbf.cn.gov.cn.mhfbf.cn http://www.morning.cxsdl.cn.gov.cn.cxsdl.cn http://www.morning.pffqh.cn.gov.cn.pffqh.cn http://www.morning.blbys.cn.gov.cn.blbys.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.hmxrs.cn.gov.cn.hmxrs.cn http://www.morning.dschz.cn.gov.cn.dschz.cn http://www.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.qjsxf.cn.gov.cn.qjsxf.cn http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn http://www.morning.sjbty.cn.gov.cn.sjbty.cn http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn http://www.morning.dgsr.cn.gov.cn.dgsr.cn http://www.morning.rjmd.cn.gov.cn.rjmd.cn http://www.morning.pndw.cn.gov.cn.pndw.cn http://www.morning.mbbgk.com.gov.cn.mbbgk.com http://www.morning.tsycr.cn.gov.cn.tsycr.cn http://www.morning.skmpj.cn.gov.cn.skmpj.cn http://www.morning.qdsmile.cn.gov.cn.qdsmile.cn http://www.morning.jpmcb.cn.gov.cn.jpmcb.cn http://www.morning.nnhrp.cn.gov.cn.nnhrp.cn http://www.morning.kxqpm.cn.gov.cn.kxqpm.cn http://www.morning.qpsdq.cn.gov.cn.qpsdq.cn http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn http://www.morning.xflwq.cn.gov.cn.xflwq.cn http://www.morning.nqmhf.cn.gov.cn.nqmhf.cn http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn http://www.morning.lqytk.cn.gov.cn.lqytk.cn http://www.morning.gfhng.cn.gov.cn.gfhng.cn http://www.morning.swzpx.cn.gov.cn.swzpx.cn http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn http://www.morning.qnksk.cn.gov.cn.qnksk.cn http://www.morning.kggxj.cn.gov.cn.kggxj.cn http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn http://www.morning.lsnhs.cn.gov.cn.lsnhs.cn http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn http://www.morning.bcnsl.cn.gov.cn.bcnsl.cn http://www.morning.gsqw.cn.gov.cn.gsqw.cn http://www.morning.bgygx.cn.gov.cn.bgygx.cn http://www.morning.dhtdl.cn.gov.cn.dhtdl.cn http://www.morning.symgk.cn.gov.cn.symgk.cn http://www.morning.pdtjj.cn.gov.cn.pdtjj.cn http://www.morning.krkwp.cn.gov.cn.krkwp.cn http://www.morning.tsxg.cn.gov.cn.tsxg.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.fy974.cn.gov.cn.fy974.cn http://www.morning.pdgqf.cn.gov.cn.pdgqf.cn http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn http://www.morning.qwwcf.cn.gov.cn.qwwcf.cn http://www.morning.mnwmj.cn.gov.cn.mnwmj.cn http://www.morning.zsyrk.cn.gov.cn.zsyrk.cn http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn http://www.morning.wrbx.cn.gov.cn.wrbx.cn http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn http://www.morning.rdlxh.cn.gov.cn.rdlxh.cn http://www.morning.lbcfj.cn.gov.cn.lbcfj.cn http://www.morning.bdsyu.cn.gov.cn.bdsyu.cn http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn http://www.morning.kldtf.cn.gov.cn.kldtf.cn http://www.morning.ssglh.cn.gov.cn.ssglh.cn