-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1406.cpp
113 lines (94 loc) · 1.65 KB
/
1406.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <stdio.h>
#include <stdlib.h>
typedef struct _Node{
char text;
_Node* next;
_Node* before;
}node;
node* textFile;
void addNode(char text){
node* newOne=(node*)malloc(sizeof(node));
newOne->text=text;
newOne->before=textFile->before;
newOne->next=textFile;
if(textFile->before!=NULL){
textFile->before->next=newOne;
}
textFile->before=newOne;
}
void printNode(){
node* temp=textFile;
while(temp->before!=NULL){
temp=temp->before;
}
while(temp->next!=NULL){
printf("%c",temp->text);
temp=temp->next;
}
printf("\n");
}
void commandL(){
if(textFile->before!=NULL){
textFile=textFile->before;
}
}
void commandD(){
if(textFile->next!=NULL){
textFile=textFile->next;
}
}
void commandB(){
node* temp=textFile->before;
if(temp!=NULL){
textFile->before=temp->before;
if(temp->before!=NULL)
temp->before->next=textFile;
free(temp);
}
}
void commandP(char text){
node* temp=textFile->before;
node* newOne=(node*)malloc(sizeof(node));
newOne->text=text;
newOne->next=textFile;
newOne->before=temp;
if(temp!=NULL)
temp->next=newOne;
textFile->before=newOne;
}
int main(){
textFile=(node*)malloc(sizeof(node));
textFile->before=NULL;
textFile->next=NULL;
int m;
while(1){
char temp;
scanf("%1c",&temp);
if(temp=='\n') break;
addNode(temp);
}
scanf("%d",&m);
for(int i=0;i<m;i++){
char command;
getchar();
scanf("%1c",&command);
switch(command){
case 'L':
commandL();
break;
case 'D':
commandD();
break;
case 'B':
commandB();
break;
case 'P':
char temp;
getchar();
scanf("%1c",&temp);
commandP(temp);
break;
}
}
printNode();
}