C言語のプログラムの問題です。 以下の要求でプログラムを作り: i. データ構造として,構造体を利用したリスト構造を用いることとし,動的にメモリ割当を行う

画像

C言語関連 | プログラミング122閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

ThanksImg質問者からのお礼コメント

どうもありがとうございました!

お礼日時:7/5 21:47

その他の回答(1件)

1

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> typedef struct LIST { int d; struct LIST *next; } list; void print_list (list *); int main (void) { list tail = {INT_MAX,NULL},head = {INT_MIN,&tail},*p; int n; char res [4]; for (;;) { printf("挿入するデータがありますか? (yes/no) ---> "); scanf ("%s",res); if (!strcmp (res,"no")) { break; } printf("データを入力して下さい ---> "); scanf ("%d",&n); for (p = &head;p -> next;p = p -> next) { list *pn = p -> next; if (pn -> d == n) { printf ("すでに入力されています\n"); break; } else if (pn -> d > n) { list *cell; if ((cell = (list *) malloc (sizeof (list))) == NULL) { exit (1); } cell -> d = n; cell -> next = pn; p -> next = cell; break; } } print_list (head.next); } printf ("挿入操作を終了します\n"); for (p = head.next;p -> next;) { list *pd = p; p = p -> next; free (pd); } return 0; } void print_list (list *p) { for (;p -> next;p = p -> next) { printf ("-> %d",p -> d); } printf ("\n"); } ------------ 挿入するデータがありますか? (yes/no) ---> yes データを入力して下さい ---> 5 -> 5 挿入するデータがありますか? (yes/no) ---> yes データを入力して下さい ---> 4 -> 4-> 5 挿入するデータがありますか? (yes/no) ---> yes データを入力して下さい ---> 7 -> 4-> 5-> 7 挿入するデータがありますか? (yes/no) ---> yes データを入力して下さい ---> 6 -> 4-> 5-> 6-> 7 挿入するデータがありますか? (yes/no) ---> yes データを入力して下さい ---> 6 すでに入力されています -> 4-> 5-> 6-> 7 挿入するデータがありますか? (yes/no) ---> no 挿入操作を終了します

1人がナイス!しています