//双链表定义及各类 *** 作 #include#include #include #include typedef int Elemtype; //定义双链表节点类型 typedef struct DlinkList { Elemtype data; //数据域 struct DlinkList *prior, *next; //前驱指针,后继指针 } DlinkList; //初始化双链表 bool InitDlinkList(DlinkList *L){ L = (DlinkList *)malloc(sizeof(DlinkList)); if (L == NULL) return false; //内存不足,分配失败 L->prior = NULL; L->next = NULL; return true; } //判断双链表是否为空 bool EmptyDlinkList(DlinkList *L){ if (L->next == NULL) return true; else return false; } //在p节点之后插入元素e bool InsertNextDnode(DlinkList *p, Elemtype e){ DlinkList *s = (DlinkList *)malloc(sizeof(DlinkList)); //申请内存,创建节点s if (p == NULL) return false; //无效参数p if (s == NULL) return false; //内存不足,分配失败 s->data = e; //s节点存放元素e s->next = p->next; if (p->next != NULL) //如果p节点有后继节点 p->next->prior = s; s->prior = p; p->next = s; return true; } //删除节点p的后继节点q bool DeleteDnode(DlinkList *p){ if (p == NULL || p->next ==NULL) return false; //无效参数p DlinkList *q = p->next; p->next = q->next; if (q->next != NULL) //如果q节点有后继节点 q->next->prior = p; free(q); return true; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)