双向循环链表表示Lists时的数据结构定义、插入操作和删除操作的实现、时间复杂度分析是什么?
答案:2 悬赏:70
解决时间 2021-11-25 01:28
- 提问者网友:先森请一心
- 2021-11-24 15:38
双向循环链表表示Lists时的数据结构定义、插入操作和删除操作的实现、时间复杂度分析是什么?
最佳答案
- 二级知识专家网友:社会水太深
- 2021-11-24 16:24
struct DCList
{
DataType Data;
struct DCList *pre,*nxt;
};
struct DCList * CreateHead(DataType d)
{
struct DCList *p=(struct DCList *)malloc(sizeof(struct DCList ));
p->data=d;
p->nxt=p->pre=p;
return p;
}
struct DCList * Create(DataType d[],int n)
{
struct DCList *p=NULL;
if(n<=0)return NULL;
p=CreateHead( d);
for(i=1;id=d;
p->nxt =h;
p->pre=h->pre;
h->pre->nxt=p;
h->pre=p;
}
void Delete(struct DCList **h,const Datatype d)
{
struct DCList *p;
for(p=*h;p->next =*h|| p->data==d;p=p->nxt);
if(p->nxt==*h&& p->data!= d)
{
printf("Data no found!");
return;
}
if(*h==p){ *h=p->nxt; }
p->nxt->pre =p->pre;
p->pre->nxt =p->nxt;
free(p);
}
{
DataType Data;
struct DCList *pre,*nxt;
};
struct DCList * CreateHead(DataType d)
{
struct DCList *p=(struct DCList *)malloc(sizeof(struct DCList ));
p->data=d;
p->nxt=p->pre=p;
return p;
}
struct DCList * Create(DataType d[],int n)
{
struct DCList *p=NULL;
if(n<=0)return NULL;
p=CreateHead( d);
for(i=1;id=d;
p->nxt =h;
p->pre=h->pre;
h->pre->nxt=p;
h->pre=p;
}
void Delete(struct DCList **h,const Datatype d)
{
struct DCList *p;
for(p=*h;p->next =*h|| p->data==d;p=p->nxt);
if(p->nxt==*h&& p->data!= d)
{
printf("Data no found!");
return;
}
if(*h==p){ *h=p->nxt; }
p->nxt->pre =p->pre;
p->pre->nxt =p->nxt;
free(p);
}
全部回答
- 1楼网友:承载所有颓废
- 2021-11-24 17:32
o(n)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯