이중 연결 목록의 올바른 위치에 이름이 포함될 새 노드를 삽입하려고합니다. 기본적으로 삽입 정렬은 내가 여기서 달성하고자하는 것입니다.노드를 이중 연결 목록에 삽입
이 삽입 기능에 대한 코드 그러나 문제가있다 :
번 이상 동일한 값을 가진 노드를 삽입하는 경우는 이중 연결리스트를 나누기- !
- 목록을 올바르게 정렬하지 못했습니다. 여기
가 삽입에 대한 코드입니다 : 여기class Doubly { private: struct node { string name; //stores name node* next; //points to next node node* prev; //points to previous node }; node* head; //points to the first node in the list node* last; //points to the last node in the list public: Doubly(); //cstrctr ~Doubly(); //dstrctr bool empty() const { return head==NULL; } void insert(const string&); void remove(const string&); void print(ostream& OutStream) const; void sort (bool); };
는 클래스의 코드 내가리스트의 선두에 삽입 할 때 문제가 생각
void Doubly::insert (const string& input)
{
// Insertion into an Empty List.
if(empty()) //create a new list with one node = Head/Null
{
node* name = new node;
head = name;
last = name;
name -> prev = NULL;
name -> next = NULL;
name -> name = input; //
}
//Insertion into a populated list
else
{
node* newnode;
newnode = head;
while (input > newnode -> name && newnode -> next != last -> next)
newnode = newnode -> next;
if (newnode == head)
{
node* name = new node;
name -> name = input;
name -> prev = newnode;
name -> next = NULL;
head -> next = name;
last = name;
}
else
{
if (newnode == last && input > last -> name) //Add the name to the end of the linked list
{
last -> next = new node;
(last -> next) -> prev = last;
last = last -> next;
last -> next = NULL;
last -> name = input;
}
else
{
node* name = new node;
name -> name = input;
name -> next = newnode;
(newnode -> prev) -> next = name;
name -> prev = newnode -> prev;
newnode -> prev = name;
}
}
}
}
그것은 내가'newnode를 읽을 예상보다 더 어렵다 -> name'; 그 모든 여분의 공간은 극복하기가 어렵습니다. :) – sarnold
한 가지 권장 사항 : 목록 머리글을 목록 항목처럼 보이게 만들고 목록을 원형으로 만듭니다. 빈 목록이 "next"와 "prev"모두를 가리키는 머리가되면, 당신은 언제나 "next"와 "prev"에 액세스 할 수 있으므로 코드 대신에 4 개가 아닌 하나의 케이스 만 사용하게됩니다. 따라서 실수로 네 번이나 일어날 가능성이있는 장소. –
또 다른 추천 사항 : 숙제를하지 않는 한 (당신이하는 것처럼 질문에 태그를 달아야합니다.) ** 자신이 직접 목록을 구현하지 마십시오. ** C++ 질문에 태그를 추가 했으므로 STL이 있고 특별한 것이 필요한 경우 , 부스트를 당길 수 있습니다. 연결된 목록을 이해하는 것이 좋지만 실제로는 직접 작성하지 마십시오. –