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

  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 }

 

你可能感兴趣的:(循环)