fork download
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. typedef struct Point{
  5. int x;
  6. int y;
  7. }Point;
  8.  
  9. typedef struct Polygon{
  10. int num_vertices;
  11. Point *vertices;
  12. }Polygon;
  13.  
  14. void addPolygon(Polygon* ps, int n, int v){
  15. int i;
  16. for(i = 0; i<n; i++){
  17. (ps+i)->vertices = malloc(sizeof(Point)*v);
  18. (ps+i)->num_vertices = v;
  19. }
  20. }
  21.  
  22. int main() {
  23. int n1=5, n2=10, v1=3, v2=4;
  24. //n1個v1邊形: 5個3邊形
  25. //n2個v2邊形: 10個4邊形
  26. int i;
  27. Polygon* ps;
  28. ps = malloc(sizeof(Polygon)*(n1+n2));
  29. for(i = 0; i<n1+n2;i++){
  30. if(i<n1){
  31. (ps+i)->vertices = malloc(sizeof(Point)*v1);
  32. (ps+i)->num_vertices = v1;
  33. }
  34. else{
  35. (ps+i)->vertices = malloc(sizeof(Point)*v2);
  36. (ps+i)->num_vertices = v2;
  37. }
  38. }
  39.  
  40. for(i = 0; i<n1+n2;i++){
  41. free((ps+i)->vertices);
  42. }
  43. free(ps);
  44.  
  45. ps = malloc(sizeof(Polygon)*n1);
  46. addPolygon(ps, n1, v1);
  47. ps = realloc(ps, sizeof(Polygon)*(n1+n2));
  48. addPolygon(ps+n1, n2, v2);
  49. for(i = 0; i<n1+n2;i++){
  50. free((ps+i)->vertices);
  51. }
  52. free(ps);
  53.  
  54. return EXIT_SUCCESS;
  55. }
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
Standard output is empty