C언어 Chapter 28.
void print_list (NODE *head)
{
if (head == NULL) {
printf("NULL\n");
}
else {
printf("%c ==> ", head -> data);
print_list (head -> next);
}
}
int count (NODE *head)
{
if (head == NULL) {
return 0;
}
else {
return (1 + count (head -> next));
}
}
void loop_free (NODE *head)
{
NODE *temp, *current;
for (temp = head; temp != NULL ; temp = current) {
current = temp -> next;
free(temp);
}
}
void free_list ( NODE *head )
{
if (head != NULL) {
free_list (head -> next );
free(head);
}
}
void concatenate ( NODE *first, NODE *second)
{
if (first -> next == NULL) {
first -> next = second;
}
else {
concatenate(frist -> next, second);
}
}
NODE *search (NODE *head, char ch)
{
NODE *walker = head;
while (( walker != NULL) && ((walker -> data) != ch)) {
walker = walker -> next; // 다음 노드로 이동
}
if (walker == NULL) {
return (NULL);
}
else {
return walker;
}
}
NODE *append (NODE *list, NODE *temp)
{
NODE *current =list;
if (list ==NULL) {
list = temp;
}
else {
while (current -> next != NULL) {
current = current -> next;
}
cureent -> next = temp;
}
return (list);
}
🔔 예) 연결리스트를 다루는 함수의 예
함수 부분
d10-6.dat 파일 내부
실행 결과
📌 연결리스트에서 삽입과 삭제는 노드의 삽입 위치에 따라 다르다. 다음의 세가지 경우를 고려해야 한다.
🔔 예) 정렬된 연결리스트에 새로운 노드를 추가하는 프로그램.
insert()
함수는 새로운 노드를 추가한다.
구조체 와 함수 선언부
main 함수 부분
프로그램 설명
연결리스트 함수 부분
insert 함수 부분
delete 함수 내부
d10-7.dat 파일 내부
실행 결과
[C언어] 문자열 파일 입출력/표준 입출력 파일/fgets( ), fputs/stdprn (0) | 2016.09.19 |
---|---|
C 언어 강좌 (파일 입출력/getc, putc/스트림/버퍼/FILE/fopen, fclose) [20120622] (0) | 2016.09.13 |
C언어 (구조체를 가리키는 포인터 변수 / 구조체를 함수의 인수로 전달하는 법 / 연결리스트 / heap 영역 / malloc / free) (0) | 2016.09.13 |
C언어 강좌 (구조체 배열/전역 변수/static/extern) (0) | 2016.09.13 |
C언어 강좌 (문자 함수/구조체/typedef 문/구조체의 정의/struct/전처리 주석 처리법/구조체의 초기화 ) (0) | 2016.09.13 |