Сообщение Re[11]: Зачем просят перевернуть строку на интервью? от 11.10.2018 3:48
Изменено 11.10.2018 4:52 Артём
Re[11]: Зачем просят перевернуть строку на интервью?
Здравствуйте, B0FEE664, Вы писали:
Тё>>>
BFE>Вот, что у меня получилось за 15 минут в 4 часа утра:
BFE>
Есть лишние буквы. Так короче:
BFE>или
BFE>
BFE>
Опять много буков и зачем-то две функции вместо одной.
Тё>>>
Тё>>>class Node {
Тё>>>public:
Тё>>>char *value;
Тё>>>Node *next;
Тё>>>}
Тё>>>Node* reverse(Node *head) {
Тё>>>...
Тё>>>}
Тё>>>
BFE>Вот, что у меня получилось за 15 минут в 4 часа утра:
BFE>
BFE>Node* reverse(Node *head)
BFE>{
BFE> if ( nullptr == head )
BFE> return head;
BFE> Node* pPrev = nullptr;
BFE> Node* pNext = head->next;
BFE> while(nullptr != pNext)
BFE> {
head->>next = pPrev;
BFE> pPrev = head;
BFE> head = pNext;
BFE> pNext = head->next;
BFE> }
BFE> return head;
BFE>}
BFE>
Есть лишние буквы. Так короче:
reverse(head *Node){
Node *prev = 0;
while(head) {
Node *next = head.next;
head.next = prev;
prev = head;
head = next;
}
return prev;
}
BFE>или
BFE>
BFE>Node* reverse2(Node *head)
BFE>{
BFE> if ( nullptr != head->next )
BFE> return head;
BFE> Node* pNewHead = reverse2(head->next);
head->>next = head;
BFE> return pNewHead;
BFE>}
BFE>Node* reverse(Node *head)
BFE>{
BFE> if ( nullptr == head )
BFE> return head;
BFE> Node* pNewHead = reverse2(head->next);
head->>next = nullptr;
BFE> return pNewHead;
BFE>}
BFE>
BFE>
Опять много буков и зачем-то две функции вместо одной.
reverse(head *Node) {
if(head && head.next){
Node *reversed = reverse(head.next);
reversed.next = head;
head.next = 0;
return reversed;
}
return head;
}
Re[11]: Зачем просят перевернуть строку на интервью?
Здравствуйте, B0FEE664, Вы писали:
Тё>>>
BFE>Вот, что у меня получилось за 15 минут в 4 часа утра:
BFE>
Есть лишние буквы. Так короче:
BFE>или
BFE>
BFE>
Опять много буков и зачем-то две функции вместо одной.
Тё>>>
Тё>>>class Node {
Тё>>>public:
Тё>>>char *value;
Тё>>>Node *next;
Тё>>>}
Тё>>>Node* reverse(Node *head) {
Тё>>>...
Тё>>>}
Тё>>>
BFE>Вот, что у меня получилось за 15 минут в 4 часа утра:
BFE>
BFE>Node* reverse(Node *head)
BFE>{
BFE> if ( nullptr == head )
BFE> return head;
BFE> Node* pPrev = nullptr;
BFE> Node* pNext = head->next;
BFE> while(nullptr != pNext)
BFE> {
head->>next = pPrev;
BFE> pPrev = head;
BFE> head = pNext;
BFE> pNext = head->next;
BFE> }
BFE> return head;
BFE>}
BFE>
Есть лишние буквы. Так короче:
reverse(head *Node){
Node *prev = 0;
while(head) {
Node *next = head.next;
head.next = prev;
prev = head;
head = next;
}
return prev;
}
BFE>или
BFE>
BFE>Node* reverse2(Node *head)
BFE>{
BFE> if ( nullptr != head->next )
BFE> return head;
BFE> Node* pNewHead = reverse2(head->next);
head->>next = head;
BFE> return pNewHead;
BFE>}
BFE>Node* reverse(Node *head)
BFE>{
BFE> if ( nullptr == head )
BFE> return head;
BFE> Node* pNewHead = reverse2(head->next);
head->>next = nullptr;
BFE> return pNewHead;
BFE>}
BFE>
BFE>
Опять много буков и зачем-то две функции вместо одной.
reverse(head *Node, reversedHead *& Node) {
if(head && head.next){
Node *reversedTail = reverse(head.next, reversedHead);
reversedTail.next = head;
head.next = 0;
} else {
reversedHead = head;
}
return head;
}