Я создаю текстовый редактор с использованием связанных списков и имею проблему в разделе удаления.
моя фактическая проблема заключается в том, чтобы удалить слова, а также может ли кто-нибудь сказать мне ключи для shift right и shift left.
я должен сделать это так, чтобы любая помощь в построении логики была ощутима.
Спасибо!
• Когда пользователь вводит ключ ввода данных, такой как алфавит, цифра или символ,
textNode с соответствующим символом добавляется сразу после узла
на него указывает курсор, и курсор перемещается на один шаг вперед.
• Когда пользователь нажимает клавишу backspace, узел, на который указывает курсор,
удаляется, и курсор перемещается на один шаг назад.
• Пользователь должен иметь возможность использовать клавиши направления для перемещения курсора в пределах
текст без редактирования текста. Примечание: клавиши вертикального направления будут перемещать курсор внутри
линии.
• Пользователь должен иметь возможность вставлять новую строку в любом месте текста, где он пожелает. Примечание
что новая строка-это не что иное, как символ, поскольку речь идет о тексте, но это так
показывается это особым образом.
• Используя клавиши Shift + direction, пользователь должен иметь возможность выбирать текст. Она
должен быть в состоянии использовать Ctrl+X, Ctrl+C и Ctrl+V для вырезания, копирования и вставки сегментов
текста в любую точку по своему выбору внутри текста.
• Пользователь должен иметь возможность найти Ctrl+F и заменить текст Ctrl+R. В данном случае небольшой
окно (возможно, в нижней части экрана) должно запрашивать у пользователя текст, чтобы
будет найден и новый текст для его замены.
•
[edit]добавлен блок кода - OriginalGriff[/edit]
Что я уже пробовал:
#include<iostream> #include<conio.h> #include<windows.h> using namespace std; struct node{ char data; node * next; }; void addtolist(node *&head, node*&tail, char data, int &size,node* current) { if (tail == nullptr) { head = tail = new node; head->data = data; head->next = nullptr; current = head; } else { tail->next = new node; tail = tail->next; tail->data = data; tail->next = nullptr; current = tail; size++; } } void printlist(node *head, int size, node *tail, node* current) { current = head; while (current != nullptr) { cout << current->data; current = current->next; } } void remove(node*&head, node*&tail, node *& current)//It is still to be Completed { node *prev = nullptr, *current1 = head; while (current1 != nullptr && current1 != current) { prev = current1; current1 = current1->next; } if (current1 == nullptr) { cout << "Key not found !"; } else if (prev == nullptr) { head = head->next; delete[]current1; cout << "yes"; } else { prev->next = current1->next; delete[]current1; cout << "yes"; } } int main() { int n, n1, n2, n3; char w='a', w1, w2; node * head = nullptr; int size = 0; node *tail = nullptr; node *current = head; while (w != 13) { w = _getch(); if (w <= 126 || w >= 32) { addtolist(head, tail, w, size,current); } else if(w == 8) { remove(head, tail, current); } Sleep(1500); printlist(head, size, tail, current); } }
OriginalGriff
В чем проблема?
Как вы можете сказать, что это проблема?
Что вы делаете, чтобы создать его?
Что вы сделали, чтобы выяснить, почему это происходит?
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы. И "у меня есть проблема" ничего не говорит нам о том, что происходит!