프로그래밍/C

연결 리스트 C언어 코드

swedu 2023. 2. 22. 09:00
728x90
반응형

2022.02.22  최초 작성

 

 

#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
	int data;
	struct Node* next;
} Node;

Node* head = NULL;
Node* tail = NULL;
Node* cur = NULL;
void printLinkedList(Node* head) {
	printf("연결리스트 출력 : ");
	cur = head;
	while (cur != NULL)
	{
		printf("%d", cur->data);
		cur = cur->next;
		if (cur != NULL)
			printf("->");
	}
	puts("");
}
void addNode() {
	while (1)
	{
		int item;
		printf("연결할 정수를 입력하세요. ");
		scanf("%d", &item);
		if (item <= 0)
			break;
		Node* newnode = (Node*)malloc(sizeof(Node));
		newnode->data = item;
		newnode->next = NULL;
		if (head == NULL)
			head = newnode;
		else
			tail->next = newnode;
		tail = newnode;
	}
}
void deleteNode() {
	while (1)
	{
		int k;
		printf("삭제할 정수를 입력하세요. ");
		scanf("%d", &k);

		if (k <= 0)
			break;
		int isSearch = 0;
		Node* cur_prev = NULL;
		cur = head;
		while (cur != NULL)
		{
			if (cur->data == k)
			{
				isSearch = 1;
				break;
			}
			cur_prev = cur;
			cur = cur->next;
		}
		if (isSearch){
			printf("%d를 삭제합니다.\n", k);

			if (cur == head)
				head = cur->next;
			else
				cur_prev->next = cur->next;
			free(cur);
		}
		else{
			printf("%d를 찾을 수 없습니다.\n", k);
		}
	}
}
int main()
{
	addNode();
	printLinkedList(head);
	deleteNode();
	printLinkedList(head);
}

[실행 결과]

연결할 정수를 입력하세요. 1
연결할 정수를 입력하세요. 2
연결할 정수를 입력하세요. 3
연결할 정수를 입력하세요. 4
연결할 정수를 입력하세요. 5
연결할 정수를 입력하세요. 6
연결할 정수를 입력하세요. 7
연결할 정수를 입력하세요. 8
연결할 정수를 입력하세요. 9
연결할 정수를 입력하세요. 0
연결리스트 출력 : 1->2->3->4->5->6->7->8->9
삭제할 정수를 입력하세요. 4
4를 삭제합니다.
삭제할 정수를 입력하세요. 8
8를 삭제합니다.
삭제할 정수를 입력하세요. 0
연결리스트 출력 : 1->2->3->5->6->7->9

 

 

728x90
반응형

 

728x90
반응형

'프로그래밍 > C' 카테고리의 다른 글

큐 C언어 코드  (0) 2023.02.22
원형 큐 C언어 코드  (0) 2023.02.22
스택 C언어 코드  (0) 2023.02.21
버블 정렬 C언어 코드  (0) 2023.02.16
선택 정렬 C언어 코드  (0) 2023.02.16