網站聲明

本網站包含了各式各樣的資源,如果有侵占到您的著作權,請與本人通知,本人會立即改進。本站所有發表僅屬研究討論性質,如果有任何後果請自行負責。

2014-09-14

TQC+ C 其他論題 910 動態記憶體配置

910.
設計說明:

1. 利用動態記憶體配置(dynamic memory allocation)的方式,嘗試建立三個節點(node),分別為 a、b、c 的鏈結串列。
2. 節點的資料型態為結構,包含三個項目,分別為學生姓名、分數、及指向本身結構的指標。
3. 此三個節點所形成的鏈結字串如下:
4. 請以一個迴圈印出此鏈結踹列每一節點的內容。
5. 程式完成正確釋放記憶體。
6. 執行結果如範例圖。


參考程式碼:
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. int main(){    
  4.  struct node{
  5.   char name[10];
  6.   int score;
  7.   struct node* next;
  8.  };
  9.  struct node *a,*b,*c,*current;
  10.  a=malloc(sizeof(struct node));//配置動態記憶體大小方式
  11.  printf("請輸入第一個學生姓名: ");
  12.  scanf("%s",a->name);
  13.  printf("分數: ");
  14.  scanf("%d",&a->score );
  15.  a->next=NULL;
  16.  b=malloc(sizeof(struct node));
  17.  printf("請輸入第二個學生姓名: ");
  18.  scanf("%s",b->name);
  19.  printf("分數: ");
  20.  scanf("%d",&b->score );
  21.  a->next=b;
  22.  b->next=NULL;
  23.  c=malloc(sizeof(struct node));
  24.  printf("請輸入第三個學生姓名: ");
  25.  scanf("%s",c->name);
  26.  printf("分數: ");
  27.  scanf("%d",&c->score );
  28.  b->next=c;
  29.  c->next=NULL;
  30.  printf("\n輸出...\n");
  31.  current = a;
  32.  while(current!=NULL){
  33.   printf("學生: %s\n",current->name);
  34.   printf("分數: %d\n\n",current->score);
  35.   current=current->next;//每顯示完畢後一次,將指標指給下一個
  36.  }
  37.  free(a);//釋放記憶體
  38.  free(b);
  39.  free(c);
  40.  system("PAUSE");
  41.  return 0;
  42. }

TQC+ C 試題總整理

聲明:

這裡的範例程式碼皆由本人親自編輯,歡迎轉載本教學,但請註明本網站,尊重一下作者的心血

2 則留言:

  1. 會出現無效轉換在3個malloc前加上 (struct node *)

    回覆刪除
  2. 無效轉換10,16,23 後面改成(struct node *)malloc(sizeof(struct node))

    回覆刪除

歡迎留言,較舊文章需要留言審核看不到自己的留言是正常的。
若長時間無回應請使用以下聯絡方式:
填寫表單:https://forms.gle/hxxX9n4tATcFnhnk8
寄信到:happyplayblogs@gmail.com