首页 > 代码库 > 线性表[ACM] (有bug)有待修改

线性表[ACM] (有bug)有待修改

 1 #include "iostream"
 2 #include "string"
 3 using namespace std;
 4 
 5 typedef struct node{
 6     string data;
 7     struct node *next;
 8     node(string str){
 9         data=http://www.mamicode.com/str;
10         next=NULL;
11     }
12 
13 }Node;
14 
15 
16     Node *head=new node("hfirst");
17     Node *back=new node("bfirst");
18     Node *current=NULL;
19     Node *pre=head;
20 
21 
22 void add(string str){
23     Node *temp;
24     if(back->data=http://www.mamicode.com/="bfirst")
25         temp=new Node(str);
26     else{
27         temp=back->next;
28         back->next=temp->next;
29         temp->data=http://www.mamicode.com/str;
30         temp->next=NULL;
31     }
32     temp->next=head->next;
33     head->next=temp;
34     current=temp;
35 }
36 
37 void move(int p){
38     int i=0;
39     for(;i<p;i++){
40         pre=current;
41         if(current==NULL){
42             cout<<"worng!!!"<<endl;
43             current=head->next;
44             pre=head;
45             break;
46         }
47         else
48             current=current->next;
49     }
50 
51 }
52 
53 void del(int i){
54     Node *temp=current;
55     Node *tp;
56     while(i!=0&&current!=NULL){
57         tp=current;
58         current=current->next;
59     }
60     if(current==NULL){
61         back->next=pre->next;
62         pre->next=NULL;
63         pre=head;
64         current=head->next;
65     }
66     else{
67         pre->next=current;
68         temp->next=back->next;
69         back->next=temp;
70     }
71     
72 }
73 void _print(){
74     cout<<current->data;
75 }
76 
77 
78 void main(){
79     string choice,str;
80     int i;
81     while(1){
82     cin>>choice;
83         if (choice==("ADD")){cin>>str;add(str);}
84         if (choice==("MOVE")){cin>>i;move(i);}
85         if (choice==("DEL")){cin>>i;del(i);}
86         if (choice==("PRINT"))_print();
87     }
88     getchar();
89 }