fork download
  1. /* list3.c データ構造(単方向リスト):整列入力、ダミーノードなし */
  2. /*問題
  3. ダミーノードを持たないリスト
  4. 入力されたデータの値によってリストは整列させてリンクする。
  5. 前回はダミーノードを予め設定してリスト処理を考えてきたが、
  6. ダミーノードを持たない単方向リストを考える方がより一般的である。
  7.  
  8. void display(void)を部分を埋めて動作を可能にせよ。
  9. */
  10. #include<stdio.h>
  11. #include<stdlib.h>
  12. struct list{
  13. float element;
  14. struct list *next;
  15. };
  16.  
  17. struct list *head;
  18. struct list *newlist(void)
  19. {
  20. return (struct list *)malloc(sizeof(struct list));
  21. }
  22.  
  23. void insert(float val)
  24. {
  25. struct list *p,*q,*r;
  26. p=head;
  27. r=newlist(); r->element=val;
  28. if(p==NULL) {r->next=p; head=r; }
  29. else if(p->element>=val { r->next=p; head=r; }
  30. else {
  31. for(q=p; p!=NULL&&p->element<val;p=p->next) q=p;
  32. r->next=p; q->next=r;
  33. }
  34. }
  35.  
  36. void delete(float val)
  37. {
  38. struct list *p,*q,*r;
  39. p=head;
  40. if(p==NULL) return;
  41. else if(p->element==val) { head=p->next; free(p); }
  42. else {
  43. for(q=p;p!=NULL&&p->element<val; p=p->next) q=p;
  44. if(p!=NULL&&p->element==val) { q->next=p->next; free(p); }
  45. }
  46. }
  47.  
  48. void initialize(void)
  49. {
  50. head=NULL;
  51. }
  52.  
  53. void display(void){ここを埋めよ}
  54.  
  55. void main(void){
  56. struct list *q,*r;
  57. int i,c=0;
  58. for(r=head;r!=NULL;r=r->next){
  59. c++;
  60. }
  61. q=head;
  62. for(i=0;i<c-2;i++){
  63. q=q->next;
  64. printf("%4x:%f\n",q,q->element);
  65. }
  66. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty