Untitled
unknown
c_cpp
3 years ago
1.8 kB
12
Indexable
//12668 - Text Editor - Linked List Version
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node *next;
struct Node *pre;
} Node;
void push(Node **cur, char data){
Node *curNode = (*cur);
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->pre = curNode;
newNode->next = curNode->next;
if(curNode->next != NULL) curNode->next->pre = newNode;
curNode->next = newNode;
(*cur) = newNode;
}
void backspace(Node **cur){
Node *curNode = (*cur);
if(curNode->pre == NULL) return;
if(curNode->next ==NULL){
(*cur) = curNode->pre;
(*cur)->next = NULL;
free(curNode);
}
else{
curNode->next->pre = curNode->pre;
curNode->pre->next = curNode->next;
(*cur) = curNode->pre;
free(curNode);
}
}
int main(){
int N,len;
char data;
scanf("%d", &N);
while(N--){
scanf("%d\n", &len);
Node* head = (Node*)malloc(sizeof(Node));
head->pre = NULL;
head->next = NULL;
Node *cur = head;
while(len--){
scanf("%c", &data);
if(data == 'L'){
if(cur->pre != NULL) cur = cur->pre;
}
else if(data == 'R'){
if(cur->next != NULL) cur = cur->next;
}
else if(data =='B'){
backspace(&cur);
}
else{
push(&cur,data);
}
}
cur = head->next; //???
while(cur != NULL){
printf("%c", cur->data);
cur = cur->next;
}
printf("\n");
free(head);
free(cur);
}
}
Editor is loading...