文件名称:双向链表及其操作
文件大小:8KB
文件格式:RAR
更新时间:2010-10-08 03:33:53
C++
算法:
typedef struct dnode {
elemtype data;
struct dnode *prior, *next;
} DNODE;
int link_ins(DNODE **head, int i, elemtype x)
{
int j = 1; /* 双向循环链表 */
DNODE *p, *q;
q = malloc( sizeof *p );
q->data = x;
if ( i == 0 ) {
q->prior = *head;
q->next = *head;
*head = q;
return 0;
}
p = *head;
j = 0;
while ( ++j < i && p != NULL )
p = p->next;
if ( i < 0 || j < i )
return 1;
else {
q->next = p->next;
p->next = q;
p->next->prior = q;
q->prior = p;
return 0;
}
}
分析:在上面的插入算法中,不需要移动别的元素,但必须
从头开始查找第i结点的地址,一旦找到插入位置,则插入结点
只需两条语句就可完成。该算法的时间复杂度为O(n)
【文件预览】:
main.c
main.plg
main.dsp
app
----funs.c(707B)
----dlist.c(2KB)
main.dsw
main.ncb
header
----funs.h(258B)
----dlist.h(542B)
main.opt