#include <iostream>
#include <string>
// blank line(s) after includes
using namespace std; // some people will say to avoid this
// but I use it in examples for brevity
// blank line(s) around class def
class nodetype
{ // bracket on its own line
public: // non indented visibility specifier
nodetype(int value, nodetype *p) // constructor first declared in class
{
adata = value; // level of indentation for fn body
ptr = p; // spaces around operators like =
}
// blank line(s) between fns and vars
int adata;
nodetype *ptr;
};
// blank line(s) between class and fn
void LinkedListDelete(nodetype **start, int akey)
{
nodetype *current, **previous; // pointer *s are connected to vars
// blank line between section
previous = start;
current = *start;
// blank line between section
// I use blank lines a lot, they help
// me to organize my thoughts
while((current != NULL) && (akey != current->adata))
{ // indentation inside nested scope
previous = ¤t->ptr; // no space for unary operators like &
current = current->ptr; // assignments justified to same level
}
if (current != NULL)
{
*previous = current->ptr; // no space for unary *, space for =
delete current;
}
// more blank lines between sections
return;
}
void LinkedListPrint(nodetype *list) // no space for unary *
{ // brackets on their own lines
while (list != NULL) // space around !=
{
cout << "(Node: " << list->adata << ") ";
list = list->ptr; // spaces around <<
}
cout << endl;
}
int main()
{
nodetype *node = new nodetype(5, new nodetype(10, // justified stuff
new nodetype(7, new nodetype(14,
new nodetype(23, NULL)))));
// blank lines
cout << "Build linked list: ";
LinkedListPrint(node);
cout << "Removed node 7: ";
LinkedListDelete(&node, 7);
LinkedListPrint(node);
return 0;
}
Я сделал этот код на основе кода, который вы указали. Это не совсем то же самое, я изменил некоторые вещи, но он делает то, что вы хотите. Я должен был догадаться, какова структура nodetype, и я добавил конструктор для моего удобства. Я добавил несколько замечаний, указывающих на аспекты моего стиля.
Обратите внимание, что это легче читать, чем код, который вы изначально предоставили. Стиль важен. Люди скажут вам, что вам нужно использовать стиль X или Y, но важно то, что вы выбираете любой стиль, который вам нравится, и придерживайтесь его последовательно; это облегчит вам быстрый и быстрый анализ вашего собственного кода.
Поверьте мне, когда вы написали много кода, вы перестаете быть в состоянии запомнить все это сразу, и возможность выяснить, что вы делаете быстро, имеет важное значение.
Если у вас возникли проблемы при записи кода, чтобы сделать то, что вы хотите, попробуйте решить проблему. Я нахожу, что это очень помогает мне. Кроме того, попробуйте отступы, это упрощает чтение кода. – Wug
Поиск на этом сайте для «Удаление узла в связанном списке» дает массу результатов, безусловно, один из них должен быть вам полезен? – stijn
Один намек: посмотрите на цикл while ... он проверяет, чтобы 'akey! = Entry-> adata'. Затем * внутри * этот цикл, вы проверяете, есть ли 'entry-> adata == akey'. Спросите себя, будет ли это «если» когда-либо выполняться. –