Untitled
unknown
c_cpp
2 years ago
1.8 kB
7
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...