//10.2-5 用环形单链表来实现字典操作INSERT、DELETE和SEARCH,并给出它们的运行时间
#include <stdio.h>
#include <stdlib.h>
typedef struct CirList
{
int Element;
CirList *Next;
}*Cl;
Cl InitCirList()
{
Cl list;
list=(Cl)malloc(sizeof(struct CirList));
if(!list)
exit(-1);
list->Next=list;
return list;
}
void Insert(int x,int position,Cl list)
{
Cl c=list;
int i=0;
while(i<position)
{
c=c->Next;
i++;
}
Cl node;
node=(Cl)malloc(sizeof(struct CirList));
if(!node)
exit(-1);
node->Element=x;
node->Next=c->Next;
c->Next=node;
}
void Delete(Cl list,int position)
{
if(list->Next==list)
exit(-1);
Cl c=list;
int i=0;
while(i<position)
{
c=c->Next;
i++;
}
Cl node;
node=c->Next;
c->Next=node->Next;
free(node);
}
Cl Search(Cl list,int x)
{
Cl position;
position=list->Next;
while(position!=list&&position->Element!=x)
{
position=position->Next;
}
return position;
}
void print(Cl list)
{
Cl position;
position=list->Next;
while(position!=list)
{
printf("%d ",position->Element);
position=position->Next;
}
printf("\n");
}
void main()
{
Cl list,p1,p2;
list=InitCirList();
Insert(1,0,list);
Insert(2,0,list);
print(list);
Insert(7,1,list);
Insert(8,1,list);
print(list);
Delete(list,2);
print(list);
p1=Search(list,8);
if(p1)
{
printf("%d\n",p1->Element);
}
}
10.2-5 用环形单链表来实现字典操作INSERT、DELETE和SEARCH,并给出它们的运行时间 算法导论答案
最新推荐文章于 2021-10-25 14:17:11 发布