1 /* 双向循环链表c++版 */ 2 /* Gxjun coder */ 3 #include4 #define type int // <由于内容不定所以就这样定义吧> 5 using namespace std; 6 7 typedef struct Node 8 { 9 type inf; // <表示的事节点的内容> 10 struct Node* pre ; // <上一节点> 11 struct Node* next ; // <下一节点> 12 }node ; 13 14 /*创建,插入,删除,打印*/ 15 16 void creat( node*& head ) 17 { 18 node *ps; /* <作为辅助指针> */ 19 node* temp= new node ; 20 cout<<" <输入数字,输入0结束> "< >temp->inf,temp->inf!=0) 22 { 23 if(head==NULL) 24 { 25 ps=head=temp; 26 } 27 else 28 { 29 ps->next=temp; 30 temp->pre=ps; 31 ps=temp; 32 } 33 temp->next=head; 34 head->pre=temp; 35 temp = new node; 36 } 37 } 38 39 40 41 void insert( type inf, int pos , node* &head ) 42 { 43 node* temp=head,*tem; 44 /* <表示head所在位置为原坐标轴> */ 45 if(pos>0) /* <表示向下> */ 46 { 47 while(pos-->1) 48 temp=temp->next; 49 } 50 else 51 { 52 /* <表示向上> */ 53 while(pos++<0) 54 temp=temp->pre; 55 } 56 tem= new node; 57 tem->inf=inf; 58 tem->next=temp->next; 59 temp->next->pre=tem; 60 temp->next=tem; 61 tem->pre=temp; 62 } 63 64 void delet( type inf ,node*& head ) 65 { 66 node* temp=head; 67 int n=0; 68 while(n++==0||temp!=head) 69 { 70 if( inf==temp->inf ) 71 { 72 temp->pre->next=temp->next; 73 temp->next->pre=temp->pre; 74 } 75 temp=temp->next; 76 } 77 } 78 79 void print(node*& head) 80 { 81 node *temp=head; 82 while( temp->next!=head ) 83 { 84 cout< 输入数字,输入0结束> 作为辅助指针> 下一节点> 上一节点> 表示的事节点的内容> 由于内容不定所以就这样定义吧>inf< 表示向上> 表示向下> 表示head所在位置为原坐标轴>next; 86 } 87 cout< inf< "< >pos,pos!=0) 98 { 99 cout<<" <输入数字inf> "< >data;101 insert(data,pos,head);102 }103 cout<<" <输入你要删除的数> "< 输入数字inf>>data;105 delet(data,head);106 print(head);107 return 0;108 } 输入你要删除的数>