C에 이중 연결 목록이 있습니다.이 노드는 char *를 보유합니다. 노드에 대한 나의 구조체는 다음과 같습니다인쇄 할 때 프로그램이 충돌 함 LinkedList
이struct LinkedListNode{
char* data;
LinkedListNode* next;
LinkedListNode* prev; };
LinkedList의의 구조체는 다음과 같습니다
struct LinkedList{
LinkedListNode* head;
LinkedListNode* tail;};
머리리스트의 첫 번째 노드에 대한 포인터, 꼬리에 대한 포인터입니다 리스트의 마지막 노드 내 문제는 내가 연습 목적으로 구현하는 연결 목록에 대한 몇 가지 표준 함수를 테스트하기위한 함수를 작성하려고하는 것입니다. 그래서 나는 다음과 같은 기능의 목록을 생성하여 시작합니다
나는이 함수의 내부를 인쇄하려고하면 나는, 각 노드의 데이터를 다시 액세스 할 수 있기 때문에, 잘 작동 것으로 보인다LinkedList* make_test_list(){
LinkedList* newlist = LinkedList_create();
printf("Hier2");
LinkedListNode n1;
LinkedListNode n2;
LinkedListNode n3;
LinkedListNode n4;
LinkedListNode n5;
n1.data = "abc";
n2.data = "def";
n3.data = "ghi";
n4.data = "pqr";
n5.data = "mno";
n1.next = &n2;
n2.next = &n3;
n2.prev = &n1;
n3.next = &n4;
n3.prev = &n2;
n4.next = &n5;
n4.prev = &n3;
n5.prev = &n4;
n5.next = NULL;
newlist->head = &n1;
newlist->tail = &n5;
return newlist;}
.
LinkedList* LinkedList_create(){
LinkedList* list = malloc(sizeof(struct LinkedList));
list->head = NULL;
list->tail = NULL;
return list;
}
그래서 내가하고 싶은 다음 것은 별도의 기능에 내 목록을 인쇄 할 수 있습니다 : LinkedList_create()는 다음과 같은 코드가 포함되어 있습니다. 이 함수는 다음과 같습니다.
void LinkedList_print(LinkedList* list){
LinkedListNode* p = list->head;
while(p != NULL)){
printf("%s\n", p->data);
p = p->next;
}}
그러나 어떻게 든 작동하지 않습니다. 나는 나의 포인터를 할당하는 동안 나는 실수를했다고 생각한다. 이 호출은 다음과 같습니다
int main(){
LinkedList* myList = make_test_list();
printf("List before: \n");
LinkedList_print(myList);
}
나 자신에 의해 메모리 할당을 관리하는 매우 C에 새로운 새로 온 사람 때문에 당신이이 일에 나를 도울 수 있다면 나는 기꺼이 것입니다.
건배!
[mcve]를 보여주십시오. 코드를 설명하지 말고 대신 보여주십시오. –