设有一个带头结点的、按元素值递减有序排列的双向循环链表,编写算法,插入一个元素并保持其有序性。
双向链表结点的类型定义如下:
typedef struct DuLNode{
int data;
struct DuLNode *prior;//指向前驱的指针
struct DuLNode *next;//指向后继的指针
}DuLNode,*DuLinkList;
这是一道考研题中的算法题,今天整理出来分享一下:
typedef int Status;
Status InitDuLinkList(DuLinkList &L,int e){
DuLinkList p,s;
p=L->next;
if(!(s=(DuLinkList)malloc(sizeof(DuLNode))))
return ERROR;
s->data = e;
while(p!=L && e < p->data){
p->prior->next = s;
s->prior = p->prior;
s->next = p;
p->prior = s;
}
return OK;
}
本文分享了一道考研算法题的解决方案,详细介绍了如何在一个带头结点的、按元素值递减有序排列的双向循环链表中插入一个新元素,并保持链表的有序性。通过具体的C语言代码实现,展示了链表插入操作的细节。
1475

被折叠的 条评论
为什么被折叠?



