```cpp
#include<bits/stdc++.h>
using namespace std;
typedef struct DNode{
int data;
struct DNode *pre,*next;
}DNode;
DNode *phead;
void headinsert(int x){
DNode *pTemp=(DNode *)malloc(sizeof(DNode));
pTemp->data=x;
pTemp->next=phead->next;
pTemp->pre=phead;
phead->next->pre=pTemp;
phead->next=pTemp;
return;
}
void detele(int x){
DNode *p=phead;
while(p->next->data!=x) p=p->next;
DNode *q=p->next;
p->next=q->next;
q->next->pre=p;
free(q);
return;
}
void insert(int x,int y){
DNode *p=phead;
while(p->data!=x&&p->next!=phead) p=p->next;
DNode *pTemp=(DNode *)malloc(sizeof(DNode));
pTemp->data=x;
pTemp->next=p->next;
pTemp->pre=p;
p->next->pre=pTemp;
p->next=pTemp;
return;
}
void printlist(){
DNode *p=phead->next;
while(p!=phead){
cout << p->data << " ";
p=p->next;
}
return;
}
void search(int x){
DNode *p=phead->next;
while(p->data!=x){
p=p->next;
}
cout << p->data << " " << p->next->data << " " << p->pre->data << endl;
return;
}
int main(){
phead=(DNode *)malloc(sizeof(DNode));
phead->next=phead;
phead->pre=phead;
headinsert(3);
headinsert(2);
headinsert(1);
search(2);
detele(2);
insert(4,1);
printlist();
return 0;
}
```
双向+循环
by CSP_JAKME @ 2024-09-19 22:37:23
@[xhx2011](/user/779534) 不,你会并查集,就不用链表
by crz_qwq @ 2024-09-19 22:41:07