私が確かに犯したばかげた間違いを指摘するのを助けるために、もう1組の目が必要です。
構造とプロトタイプ:
typedef struct node {
int data;
struct node *next;
} Node;
Node *orderedInsert(Node *p, int newval);
/* Allocates a new Node with data value newval
and inserts into the ordered list with
first node pointer p in such a way that the
data values in the modified list are in
nondecreasing order as the list is traversed.
*/
関数:
#include "orderedList.h"
#include <stdio.h>
#include <stdlib.h>
Node *orderedInsert(Node *p, int newval){
struct node* new = NULL
new = malloc(sizeof(struct node));
struct node* last = p;
while(1){
if (p == NULL){
if (last == p){
return 1;
}
new->data = newval;
new->next = NULL;
break;
}
if ((last->data <= newval) && (p->data >= newval)){
new->data = newval;
new->next = p;
break;
}
}
return 0;
}
パラメータを指定してorderedInsertを呼び出すと、セグメンテーション違反が発生します。