내가 구조체 prev
및 next
포인터를 가지고 ListItem
및 T 형식의 값을 사용하여 이중 연결리스트를 만드는 중이를 연결정렬 된 삽입이 이중으로 목록
내가 바로 그 일을하고 있습니까?
주 코드를 실행하면 디스플레이에 1, 15 및 16 만 표시됩니다.
template <class T>
void List<T>::insertSorted(T item)
{
ListItem<T> *node=new ListItem<T>(item);
if (head==NULL)
{
head=node;
}
else if (head!=NULL)
{
T c,d;
ListItem<T> *temp,*temp2;
temp=head;
c=temp->value;
int count=0;
while (temp->next!=NULL)
{
if (temp->prev!=NULL)
temp2=temp->prev;
if (c>item && item>temp2->value)
{
if (temp->prev!=NULL)
{
temp2->next=node;
node->prev=temp2;
node->next=temp;
temp->prev=node;
count++;
}
else if (temp->prev==NULL)
{
head=node;
head->next=temp;
count++;
}
}
temp=temp->next;
c=temp->value;
}
if (temp->value<item) //comparison with last temp
{
temp->next=node;
node->prev=temp;
}
else if (temp->value>item)
{
temp2=temp->prev;
temp2->next=node;
node->prev=temp2;
node->next=temp;
temp->prev=node;
}
}
}
int main()
{
List<int> Mylist;
for (int i=16;i>0;i--)
{
Mylist.insertSorted(i); //insertion should be in ascending order according
//to my fnction
}
Mylist.printList(); //prints the whole linked list
system("PAUSE");
return 0;
}
디버거는 친구이므로 한 줄씩 코드를 단계별로 실행하는 데 사용하십시오. –
결과가 예상 한 것과 다를 경우 기대치가 틀리거나 올바르게 수행하지 못합니다. –