typedef int Element;
typedef struct LinkedNode {
Element data;
struct LinkedNode* link;
} Node;
void insert_next(Node *prev, Node *node) {
if (node != NULL) {
node->link = prev->link;
prev->link = node;
}
}
void insert(Node* head, int pos, Element e) {
Node *new_node, *prev;
new_node = (Node*)malloc(sizeof(Node));
new_node->data = e;
new_node->link = NULL;
if (pos == 0) {
new_node->link = head;
head = new_node;
}
else {
prev = get_entry(head, pos - 1);
if (prev != NULL)
insert_next(prev, new_node);
else free(new_node);
}
}
Node* get_entry(Node* head,int pos) { // 혹시 몰라서 같이 올려보는 get_entry
Node* p = head;
int i;
for (i = 0; i < pos; i++, p = p->link)
if (p == NULL) return NULL;
return p;
}
void main()
{
Node *list1 = NULL, *list2 = NULL;
Node *p;
init_list(list1);
insert(list1, 0, 1);
insert(list1, 1, 2);
insert(list1, 2, 3);
insert(list1, 3, 4);
insert(list1, 4, 5);
print_list(list1,"단순 연결리스트로 구현한 list");
}
--------------------------------------
아까 올린 글은 본인이 빡대가리라서 양심도 같이 출타해버렸노 미안하다 게이들아
insert 함수가 먹통인데.. 이거 함수 매개변수에 이중포인터 써야 작동할까?
원래 공부하던 책에서는 연결리스트를 한개만 만들고 삽입할수 있어서 리스트를 2개 만들어보고싶어서 개조하는 중이었음
근데 그렇게 하려고 함수들 매개변수를 바꿔보니까 원래 작동하던 함수들도 작동을 안하더라
Node** 받게 해야지. insert(&list1, 0, 1); 이런식으로 전반적으로 구조 바꿔야 하는데
일단 너는 포인터 처음부터 다시 공부하고 오는게 낫겠다
inert 함수에서 head = 백날 대입해봤자 main()의 list1한테는 영향 1도 없다
역시 그런거였구나 처음부터 다시 공부해야겠다..