双向循环链表


为了提高访问效率,引入了双向链表的内容。但是双向链表需要占用更多内存,也并不是绝对有优势。


由于链表操作基本一致,只给出插入和删除操作。(其它参考上一篇(链表))



/*
------------------------------------------ 函数名:remove 描 述:删除指定位置的数据 入口参数:位置 出口参数:enum returninfo枚举型,判断是否成功 -------------------------------------------*/ enum returninfo remove(int position) { int i; PNODE searchp = headp->next; //平时定义的followp在双向链表中不需要哦, for (i = 0; i < position && searchp != headp; i++) { searchp = searchp->next; } searchp->previous->next = searchp->next; searchp->next->previous = searchp->previous; free(searchp); count--; return success; } /*------------------------------------------ 函数名:insert 描 述:插入数据到指定位置 入口参数:位置,数据 出口参数:enum returninfo枚举型,判断是否成功 -------------------------------------------*/ enum retuninfo insert(int position, int item) { int i; PNODE searchp = headp; PNODE newnodep = (PNODE)malloc(len); for (i = 0; i < position && searchp->next != headp; i++) { searchp = searchp->next; } newnodep->next = searchp->next; searchp->next->previous = newnodep; seachhp->next = newnodep; newnodep->previous = searchp; count++; return success; }

  

原文地址:https://www.cnblogs.com/WineinSeptember/p/12755457.html