C언어 선형리스트 질문입니다.
글쓴이: student93 / 작성시간: 일, 2016/01/10 - 4:19오후
입문자입니다.
구조체의 배열을 선형리스트로 변환시키고 싶습니다.
도움좀 주세요 ㅠㅠ
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char name[10];
int age;
int weight;
}DATA;
struct linked_list {
DATA d;
struct linked_list *next;
};
typedef struct linked_list ELEMENT;
typedef ELEMENT *LINK;
int main(void)
{
DATA information[10];
LINK h;
h = create_l(information);
}
LINK create_l(DATA information[])
{
LINK head;
if (information[0] == NULL) /*이 부분 왜 안되는 것일 까요 ....*/
return NULL;
else {
head = malloc(sizeof(ELEMENT));
head->d = information[0];
head->next = create_l(information + 1);
return head;
}
}Forums:


참고해보세요.
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char name[10]; int age; int weight; }DATA; typedef struct linked_list { DATA d; struct linked_list *prev; }ELEMENT, * LINK; DATA* information; LINK h; LINK create_l(DATA* pim) { printf("pim : %x\n", pim); LINK head; if(pim->age == -1 && pim->weight == -1) { return NULL; } else { head = (LINK) malloc(sizeof(ELEMENT)); head->d = pim[0]; printf("IN "); head->prev = create_l(pim + 1); printf("OUT "); printf("pim head : %x head->prev : %x\n", head, head->prev); return head; } } int main(int argc, char** argv) { printf("데이터를 생성한다.\n"); DATA im[11]; int i=0; for(i=0; i<10; i++) { im[i].age = i; im[i].weight = i; char buf[100]; sprintf(buf, "name%d", i); strcpy(im[i].name, buf); printf("%x\n", &im[i]); } //마지막을 확인하기 위해서 im[10].age = -1; im[10].weight = -1; printf("데이터를 변환한다.\n"); h = (LINK) create_l(im); printf("h %x\n", h); printf("데이터를 출력한다.\n"); LINK head; head = h; LINK tmp; while(1) { printf("head [ %x] ", head); tmp = head; head = head->prev; printf("데이터를 해제한다. %x\n", tmp); free(tmp); if(head == NULL) { printf("완료\n"); break; } } return 0; } #if 0 데이터를 생성한다. 22fe08 22fe1c 22fe30 22fe44 22fe58 22fe6c 22fe80 22fe94 22fea8 22febc 데이터를 변환한다. pim : 22fe08 IN pim : 22fe1c IN pim : 22fe30 IN pim : 22fe44 IN pim : 22fe58 IN pim : 22fe6c IN pim : 22fe80 IN pim : 22fe94 IN pim : 22fea8 IN pim : 22febc IN pim : 22fed0 OUT pim head : 3d4028 head->prev : 0 OUT pim head : 3d4008 head->prev : 3d4028 OUT pim head : 3d3fe8 head->prev : 3d4008 OUT pim head : 3d3fc8 head->prev : 3d3fe8 OUT pim head : 3d3fa8 head->prev : 3d3fc8 OUT pim head : 3d3f88 head->prev : 3d3fa8 OUT pim head : 3d3f68 head->prev : 3d3f88 OUT pim head : 3d3f48 head->prev : 3d3f68 OUT pim head : 3d3f28 head->prev : 3d3f48 OUT pim head : 3d3f08 head->prev : 3d3f28 h 3d3f08 데이터를 출력한다. head [ 3d3f08] 데이터를 해제한다. 3d3f08 head [ 3d3f28] 데이터를 해제한다. 3d3f28 head [ 3d3f48] 데이터를 해제한다. 3d3f48 head [ 3d3f68] 데이터를 해제한다. 3d3f68 head [ 3d3f88] 데이터를 해제한다. 3d3f88 head [ 3d3fa8] 데이터를 해제한다. 3d3fa8 head [ 3d3fc8] 데이터를 해제한다. 3d3fc8 head [ 3d3fe8] 데이터를 해제한다. 3d3fe8 head [ 3d4008] 데이터를 해제한다. 3d4008 head [ 3d4028] 데이터를 해제한다. 3d4028 완료 -------------------------------- Process exited after 0.2696 seconds with return value 0 계속하려면 아무 키나 누르십시오 . . . #endif----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기