0
將節點添加到升序鏈接列表
我在這裏看到了一些類似的東西,但沒有幫助我。所以請糾正我,無論我錯了。分段錯誤
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node* link;
};
struct node* head = NULL;
void add(int);
void print();
int main()
{
add(1); print();
add(2); print();
add(5); print();
add(4); print();
add(3); print();
return 0;
}
***/* if list is empty or if new node is to be inserted before the first node*/***
void add(int num)
{
struct node* temp;
temp = head;
struct node* newNode = (struct node*)malloc(sizeof(struct node));
newNode->data = num;
newNode->link = NULL;
if((head == NULL)||(head->data > num))
{
newNode->link = head;
head = newNode;
}
else
{
***/* traverse the entire linked list to search the position to insert the new node*/***
while(temp!=NULL)
{
if(temp->data <= num && (temp->link->data > num || temp->link == NULL))
{
newNode->link = temp->link;
temp->link = newNode;
return;
}
temp= temp->link;
}
}
}
***/*Display the content of the linked list*/***
void print()
{
struct node* temp;
temp = head;
while(temp!=NULL)
{
printf("%d", temp->data);
temp=temp->link;
}
printf("\n");
}
在運行該代碼O/P是:
分段錯誤(核心轉儲)
請大家幫幫我,怎麼解決這個問題
不是您的問題的原因,但[請不要在C](http://stackoverflow.com/a/605858/28169)中投射'malloc()'的返回值。 – unwind
也許你應該看看這裏,並比較實施http://www.thegeekstuff.com/2012/08/c-linked-list-example/ –
@unwind但如果我沒有使用鑄造它會給出錯誤。我剛剛看到您的評論,並得到以下錯誤。 「無效轉換從'void *'到'node *' – user1745866