私のプログラムでリンクリストを作成する必要があります。私のプログラムでは、リストはmalloc()でヒープ上に割り当てられていますが、私はそれを訪問しようとしますが、セグメーションの失敗があります。リンクリストの割り当て後のセグメンテーションフォールト
EDIT:私はこのラインでSIGSEGVを取得 "しながら(!(ノード - >のnodeType == TYPE_END_LIST)){"
struct dagNode *createList(int k);
struct dagNode *newNodeXInterval(int type, int val);
struct dagNode *createList(int k){
struct dagNode *head, *node;
printf("\nList %d = ", k);
head = newNodeXInterval(TYPE_EDGE_OR_GAP, getVal(k,1));
node = head;
int i;
for (i=1; i<LENGTH_OF(k); i++){
node->next = newNodeXInterval(TYPE_XTEST, getRightPointOf(k,i));
node = node->next;
node->next = newNodeXInterval(TYPE_EDGE_OR_GAP, getVal(k,i+1));
node = node->next;
}
node = newNodeXInterval(TYPE_END_LIST, 0);
node = head; // i think that here there is the error
printf("%d", node->val); i=0;
while(!(node->nodeType == TYPE_END_LIST)){
printf("%d ", i);
node = node->next;}
return head;}
struct dagNode *newNodeXInterval(int type, int val){
struct dagNode *node = (struct dagNode *) malloc(sizeof(struct dagNode));
if (type == TYPE_EDGE_OR_GAP){
*node = (struct dagNode) {(val<0)? TYPE_GAP:TYPE_EDGE, val, NULL, NULL, NULL};
}
else{
*node = (struct dagNode) {type, val, NULL, NULL, NULL};
}
return node; }
、呼び出し元関数は、リストの先頭になるだろう。
これを絞り込んでください。どのラインでセグメント違反がありますか? –
もしあなたがSEGVを手に入れたら、おそらくコアが得られ、どこで死んだのか正確に見ることができますか? – Useless