双方向リストを用いて数値を昇順に格納するプログラムなのですが、以下のようなコードを書いても入力した数値がそのまま格納されてしまいます。
まず、insert_pos関数で格納する場所を返しているのですが、この書き方は大丈夫でしょうか。
またコード中の"1","2"の間にp->num=dを入れてみたのですが、プログラムがうまく動作しませんでした。値を格納するのはポインタの場所が決まらないとできないのでしょうか。どなたかご教示いただけますと幸いです。
#include <stdio.h>
#include <stdlib.h>
struct data_t {
struct data_t *next, *prev;
int num;
};
struct data_t *insert_pos(struct data_t *p, struct data_t *w) {
if (p == NULL) {
} else {
while (w->num > p->num) {
p = p->next;
}
}
return p;
};
struct data_t head;
int main() {
struct data_t *p, *q;
int d, j;
head.prev=&head;
head.next=&head;
for (p=head.next; scanf("%d", &d) != EOF;p=p->next) {
p = (struct data_t *)malloc(sizeof(struct data_t)); "1"
q = insert_pos(head.next, p); "2"
insert(q, p);
p->num = d;
}
}
回答1件
あなたの回答
tips
プレビュー