2013-03-03 2 views
1

이 내 구조 선언연결된 목록의 다음 메모리를 가리키는 방법은 무엇입니까?

struct Package_Node 
{ 
    int bar_code; 
    float package_weight; 
    struct Package_Node *next;//_packaged; 
}; 

struct Key_Node 
{ 
    int key; 
    struct Package_Node *next;//_package; 
}; 

는이 그들에 어떤 임의의 항목을 추가하는 방법입니다

 for(int i=0;i<N;i++) 
     { 
      barcodeTemp = rand() % max_value + 1; 
      keyTemp = barcodeTemp % X; 
      tempWeight = rand() % 500 + 1; 
      totalPackages[i].bar_code=barcodeTemp; 
      totalPackages[i].package_weight=tempWeight; 

     } 
     for(int i=0;i<N;i++) 
     { 
      cout << totalPackages[i].bar_code <<endl; 
      cout << totalPackages[i].package_weight << endl; 
     } 

나는 외부 I 코드 내부에 무언가를 추가해야 할 것을 궁금해하고 있어요 연결된 목록을 만드는 구조 ?? 좀 더 명확히하기 위해 나는 bar_code와 package_weight의 무작위 값을 갖는 Package_node 구조체를 사용하여 5 개의 무작위 패키지를 만들었다. 나는 해시 테이블 메소드를 사용하여 key_node에서 패키지 정보를 저장할 위치를 결정합니다. key_node [1]에 두 개의 요소가 있고 세 번째 요소를 추가하려면 아무 것도 제거하지 않고 끝에 세 번째 요소를 추가하려면 어떻게해야합니까? 링크 목록이어야하며 끝은 항상 NULL을 가리켜 야합니다.

답변

0

이 같은 것을 추가하여 루프 :

totalPackages[i].next = NULL; 
if (i>0) { 
    totalPackages[i-1].next = &totalPackages[i]; 
} 
+0

가의 중요성은 무엇입니까 "만약"문 그리고 [I-1] 다음 내용 대신 totalPackages [I] –

+0

I의 totalPackages 이유 totalPackages는 고정 크기의 배열 또는 std :: vector라고 가정하고 if 문은 인덱스 -1에있는 벡터의 요소에 액세스하지 못하도록합니다. –

+0

목록의 이전 요소가 다음 요소를 가리 키도록하려는 경우 이전 요소의 포인터를 현재 요소로 설정해야합니다. –

관련 문제