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=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=="bfirst")
25 temp=new Node(str);
26 else{
27 temp=back->next;
28 back->next=temp->next;
29 temp->data=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&¤t!=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 }
线性表[ACM] (有bug)有待修改,布布扣,bubuko.com
时间: 2025-01-16 10:40:02