2017-12-23 10 views
-2

enter image description here나는 두 배 연결된 명부 그러나 배열 안쪽에 머리와 꼬리 포인터가, 어떤 아이디어 저를 도울 수 있 었는가?

어떻게 머리와 꼬리 포인터의 배열을 만들고 링크 된 목록과 연결할 수 있습니까, 나는 두 개의 배열이 필요하다고 생각합니다! 이

struct node { node*next ; int data;} 
node arr1[];//here the array of head pointers 
node arr2[];//another array of tail pointers 
+1

두 개의 배열이 필요하지 않습니다. 구조체 노드에 두 개의 포인터가 필요합니다 'struct node { struct 노드 * 다음으로; struct node * prev; int 데이터; }' –

+0

@AhmedMasud, 네, 배열 안에서 머리와 꼬리를 만들고 링크 된 목록과 연결하는 법 – KlRF

+0

C가 아닌 C++로 프로그래밍 된 것처럼 보입니다. 적절하게 태그를 조정하십시오. 예를 들어, C++에서 구조체는 고유 한 형식입니다. C에서 그렇진 않습니다. –

답변

2

당신이 C++로 프로그래밍되어 있기 때문에, 내가 std::vector를 사용하는 것이 좋습니다 방정식의 이미지입니다.

당신은 두 벡터 또는 구조체의 하나 개의 벡터 사용할 수 있습니다 그러나

struct Head_Tail 
{ 
    node * head; 
    node * tail; 
}; 

std::vector<Head_Tail> list_pointers; 

을, 당신의 그림은 목록의 용기를 나타내는 것으로 판단 :

std::vector<std::list<int>> diagram; 

사용해야하는 경우 자신의 목록, 대신 std::list 대체하십시오. 당신이 목록의 정량이있는 경우
, 당신은 사용할 수 있습니다

My_Double_Linked_List diagram[42]; 
0

을 나는 여러 연결리스트를 필요로하기 때문에 당신이 배열을 사용하는 것 같아요, 그래서리스트의 구조는 머리에 포인터와 꼬리가있는 경우 두 배열의 노드에 대한 참조를 추가 할 수 있습니다. 새 머리 또는 꼬리가 생길 때마다 배열을 변경해야합니다.