include<stdio.h>
include<stdlib.h>
define a 5
typedef struct node{
int data;
struct node rlink,llink;
}linknode,*linklist;
void create (linklist &first){ //创建赋值
int b[a];
first=(linknode)malloc(sizeof(linknode));
first->rlink=first;
first->llink=first;
linknode s,q,r=first;
printf("请输入数据:");
for(int i=0;i<a;i++){
scanf("%d",&b[i]);
}
for(int i=0;i<a;i++){
s= (linknode*)malloc(sizeof(linknode));
s->data=b[i];
q=r->rlink;
s->llink=r;
q->llink=s;
r->rlink=s;s->rlink=q;
r=s;
}
}
void printlist(linklist first){ //输出
linklist p;
p=first->rlink;
printf("请输出数据:");
while(p!=first){
printf("%d",p->data);
p=p->rlink;
if(p!=first)
printf(" ");
}
printf("\n");
}
void search(linklist first){ //查找元素 ,得到元素地址
int c;
linklist p;
printf("请问要查找的元素是:");
scanf("%d",&c);
p=first->rlink;
while(p!=first&&p->data!=c){
p=p->rlink;
}
if(p!=first){
printf("要查找的元素的地址是:%d\n",p);
}
else printf("没有找到这个元素!");
}
void locate(linklist first){ //找到元素数据
linklist p;
int c;
printf("请问要查找的第几个元素是:");
scanf("%d",&c);
if(c<0){
printf("不符合条件!");
return;
}
p=first->rlink;
for(int i=1;i<c;i++){
if(p==first){
break;
}else p=p->rlink;
}
printf("这个元素是:");
printf("%d\n",p->data);
}
linklist located(linklist first,int b){ //找到第几个元素指针
int k=1;
linklist p;
if(b==0)
return first;
p=first->rlink;
while(k<b){
p=p->rlink;
k++;
}
return p;
}
void remove(linklist first){
int c,b;
linknode p,pre;
printf("请问要删除第几个元素:");
scanf("%d",&c);
pre=located(first,c-1);
p=pre->rlink;
printf("请输出要删除的元素:");
printf("%d\n",p->data);
if(p==NULL) return;
p->rlink->llink=pre;
pre->rlink=p->rlink;
free(p);
return;
}
void insert(linklist first){
int i,j;
linknode p,s;
printf("请问要在第几个位置插入元素:");
scanf("%d",&i);
printf("\n");
printf("请问要插入的元素是:");
scanf("%d",&j);
printf("\n");
s=(linknode*)malloc(sizeof(linknode));
if(sNULL){
printf("存储分配失败!\n");
exit(1); }
p=located(first,i-1);
if(pfirst) return;
s->data=j;
s->rlink=p->rlink;
p->rlink=s;
s->rlink->llink=s;
s->llink=p;
}
int main(){
linklist L;
create (L);
printlist(L);
search(L);
locate(L);
remove(L);
printlist(L);
insert(L);
printlist(L);
return 0;
}