循环单链表、双向链表的创建初始化、删除
循环单链表的初始化:
//循环单链表的初始化 bool InitCyList(Linklist &L) { L = new LNode;//创建一个新的结点作为头结点,用头指针L指向头结点 L->next = L;//让头结点的指针域为本身 return true; }
带尾指针的循环链表的合并:
//带尾指针的循环链表的合并 Linklist Connect(Linklist Ta, Linklist Tb) { LNode *p = Ta->next; Ta->next = Tb->next->next; delete Tb->next; Tb->next = p; return Tb; }
双链表的创建:
//双链表的创建 typedef struct DuLNOde { int data; struct DuLNOde *prior, *next; }DuLNOde,*DuLinkList;
双向链表的初始化:
//双链表的初始化 bool InitDulist(DuLinkList &L) { L = new DuLNOde; L->next = L->prior = NULL; return true; }
双向链表的删除
bool ListDeleteDul(DuLinkList &L, int i, int &e) { //找到位置 DuLNOde *p = L; int j = 0; while (p && j < i - 1) { p = p->next; j++; } if (!p || j > i - 1) return false; //删除 e = p->data; p->prior->next = p->next; p->next->prior = p->prior; delete p; return true; }
存储密度:
顺序存储存储密度=1 链式存储存储密度<1

浙公网安备 33010602011771号