帮同学的忙,随意写了个课程设计(关于循环双向列表)

时间:2022-05-05
本文章向大家介绍帮同学的忙,随意写了个课程设计(关于循环双向列表),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  1 /*  双向循环链表c++版  */
  2 /*     Gxjun coder     */
  3 #include<iostream>
  4 #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结束>"<<endl ;
 21     while(cin>>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<<temp->inf<<endl;
 85             temp=temp->next;
 86     }
 87     cout<<temp->inf<<endl;
 88 }
 89 
 90 int main()
 91 {
 92     node *head=NULL;
 93     type data;
 94     int pos;
 95     creat(head);
 96     cout<<" <输入你要插入的位置(+n 向下,-n向上),以0结束>"<<endl;
 97     while(cin>>pos,pos!=0)
 98     {
 99         cout<<"<输入数字inf>"<<endl;
100         cin>>data;
101         insert(data,pos,head);
102     }
103     cout<<"<输入你要删除的数>"<<endl;
104     cin>>data;
105     delet(data,head);
106     print(head);
107     return 0;
108 }