[C/C++] 이중 LinkedList 구현 예제
2021. 10. 14. 17:56
Language/C
사용자로부터 정수 값을 입력받아 이중연결 리스트로 생성한다. 리스트 노드는 입력받은 순서대로 연결한다. 이중연결 리스트 삽입 함수/삭제 함수를 사용한다.(교재 참고) (1) 입력받은 후 display() 함수에 의해 각 노드의 내용을 출력한다. (display() 교재 참고) (2) 마지막 데이터를 삭제 후 (삭제 함수 이용), 다시 display() 함수로 각 노드 내용을 출력한다. - 입력을 끝내기 위해 마지막에 -1을 입력한다. - DlistNode 타입을 정의하여 사용한다. - 동적 메모리 할당을 사용한다. 15 25 70 5 10 -1 15 25 70 5 10 15 25 70 5 7 20 12 -1 7 20 12 7 20 #include #include typedef struct DlistNod..
[C / C++] 단일 Linked List 예제 1
2021. 10. 7. 12:42
Language/C
사용자로부터 정수 값을 입력받아 단일 연결 리스트로 생성한다. 리스트 노드는 입력받은 순서대로 연결한다. 단일 연결 리스트 삽입 함수를 사용한다.(교재 참고) display() 함수에 의해 각 노드의 내용을 출력한다. (교재 참고) - 입력을 끝내기 위해 마지막에 -1을 입력한다. - ListNode 타입을 정의하여 사용한다. - 동적 메모리 할당을 사용한다. 15 25 70 5 10 -1 15 25 70 5 10 7 20 12 -1 7 20 12 #include #include typedef struct List{ int data; struct List *link; } ListNode; void display(ListNode *h) { while (h != NULL) { printf("%d ", h->..
[C] Linked List - 삽입, 삭제, 순회
2021. 10. 4. 18:37
Language/C
insert_node() void insert_node(ListNode **phead, ListNode *p, ListNode *new_node) # phead: 헤드포인터 head에 대한 포인터 # p : 삽입될 위치의 선행노드를 가리키는 포인터(이 노드 다음에 삽입) # new_node : 새로운 노드를 가리키는 포인터 삽입의 3가지 경우 1) head가 NULL인 경우: 공백 리스트에 삽입 2) p가 NULL인 경우 : 리스트의 맨 처음에 삽입 3) 일반적인 경우: 리스트의 중간에 삽입 왜 head포인터를 바로 전달하지 않고 head포인터의 주소인 phead를 인자로 전달하는지? 그것은 C언어에서 함수를 호출할때 Call by vallue로 인자를 전달하기 때문에 head포인터를 그냥 전달해 버리면..
[C] 구조체, 포인터
2021. 9. 20. 21:38
Language/C
구조체(Struct) 같은 타입의 데이터들을 묶는 배열과 달리 구조체는 타입이 다른 데이터를 하나로 묶을 때 사용한다. 구조체 안의 각각의 데이터는 필드 혹은 멤버라고 칭한다 (C언어에서는 필드) 구조체를 정의 할 때에는 struct 라는 키워드를 사용한다. struct example { char cfiled; int ifield; }; 정의 만으로는 주소가 할당되지 않고 변수로 선언했을 때 주소가 할당된다. struct example s1; //cfield와 ifield를 가진 s1 구조체 선언 typedef C언어에는 프로그래머가 자기 자신이 이해하기 쉽게 할 수 있는 타입명을 만들수 있게 하는 typedef가 있다. 이를 통해서 생성된 구조체의 의미를 쉽게 파악할 수 있게 할 수 있다. typede..