Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. typedef struct
  2. {
  3. int index;
  4. // 위치
  5.  
  6. int distance;
  7. // 가중치
  8.  
  9. struct Node *next;
  10. // 연결리스트 다음 노드를 가르키는 값
  11. } Node;
  12.  
  13. void push(Node *root, int index, int distance)
  14. {
  15. Node *node = (Node*)malloc(sizeof(Node));
  16. // Node 에 새로운 값을 넣어야 하기 때문에 동적할당을 해줘야 합니다.
  17.  
  18. node->index = index;
  19. node->distance = distance;
  20. node->next = root->next;
  21. // 새로운 node의 next 값을 기존의 node의 next 값을 저장
  22. // 0 1 2 배열에 5 를 추가한다면 5 0 1 2 로 하나씩 뒤로 밀려나는것을 설정한 것입니다.
  23. root->next = node;
  24. // 기존의 node 값이 새로 추가한 값을 가리키도록 합니다.
  25.  
  26. // 새로운 Node 의 초기값을 잡아줍니다.
  27. }
  28.  
  29. void showAll(Node *root)
  30. {
  31. Node *cur = root->next;
  32. // 출력할 순서의 초기값
  33.  
  34. while (cur != NULL)
  35. {
  36. printf("%d(거리: %d) ", cur->index, cur->distance);
  37. // 어떠한 원소로 연결되어 있으며 해당 원소까지의 거리
  38.  
  39. cur = cur->next;
  40. // 출력후 다음 노드를 출력하도록 가르킵니다.
  41. }
  42. }
  43.  
  44. int main(void)
  45. {
  46. int n, m;
  47. // n = 노드의 갯수, m = 간선의 갯수
  48.  
  49. scanf_s("%d %d", &n, &m);
  50. // 노드의 갯수와 간선의 갯수를 입력 받습니다.
  51.  
  52. Node** arr = (Node**)malloc(sizeof(Node*) * n);
  53. // 인접 리스트로 구현 할 경우 Node 갯수만큼 연결리스트가 필요 공간을 만들어 줍니다.
  54.  
  55. for (int i = 1; i <= n; i++)
  56. {
  57. arr[i] = (Node*)malloc(sizeof(Node));
  58. // 각각의 노드를 동적 할당으로 초기화 해줍니다.
  59.  
  60. arr[i]->next = NULL;
  61. // 초기값을 NULL 을 가르키도록 설정
  62. }
  63. for (int i = 0; i < m; i++)
  64. {
  65. // 각각의 간선에 값을 받을 수 있도록 합니다.
  66.  
  67. int x, y, distance;
  68. scanf_s("%d %d %d", &x, &y, &distance);
  69. // 각각의 간선과 가중치를 입력 받습니다.
  70.  
  71. push(arr[x], y, distance);
  72. // 특정한 노드 x 를 y 라고 연결하고 가중치 또한 넣어줍니다.
  73. }
  74. for (int i = 1; i <= n; i++)
  75. {
  76. // 노드 리스트를 출력합니다.
  77. printf("원소 [%d]: ", i);
  78. showAll(a[i]);
  79. printf("\n");
  80. }
  81. system("pause");
  82. return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement