0
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *link;
}list;
list *header =NULL;
void insert(int num)
{
printf("num:%d ", num);
struct node *temp, *r;
temp = header;
r = malloc(sizeof(struct node));
r -> data = num;
if(temp == NULL ||temp-> data > num)
{
r-> link = temp ;
header = r;
}
else
{
while(temp !=NULL)
{
if(temp -> data <= num && (temp->link->data > num));
{
r -> link = temp -> link;
temp->link=r;
return;
}
temp = temp -> link;
}
}
}
void display()
{
struct node *temp;
temp = header;
while(temp != NULL)
{
printf("%d ", temp->data);
temp = temp->link;
}
}
void main()
{
insert(10);
insert(5);
insert(17);
insert(8);
insert(23);
insert(78);
display();
}
這裏我試圖按升序插入元素。令我驚訝的是,我得到的輸出是5 78 23 8 17 10,這是不正確的,任何人都可以看看這個嗎?任何幫助,將不勝感激..按升序將元素插入單向鏈表中。
分號後'if'是錯誤的。但是你也有其他的邏輯錯誤。 – keltar
感謝您的及時回覆。我可以知道邏輯錯誤嗎? –
如果最後一個節點比新節點更小 - 你仍然想要插入新節點,但是沒有代碼。 – keltar