반응형

단순 연결리스트

단순 연결 리스트

#include<stdio.h>
#include<stdlib.h>

struct node_record{
	int data;
	struct node_record *next;
};
typedef struct node_record node;
typedef node *node_ptr;

void insert(node_ptr *pptr, int data);
void deletee(node_ptr *pptr, int data);
void printlist(node_ptr ptr);

main()
{
	node_ptr ptr = NULL;
	int select, data;
	
	while(1)
	{
		printf("select menu : 1.insert 2.deletee 3.print 4.exit => ");
		scanf("%d",&select);
		if(select == 1)
		{
			printf("input data => ");
			scanf("%d",&data);
			insert(&ptr,data);
		}
		else if(select == 2)
		{
			printf("delete data => ");
			scanf("%d",&data);
			deletee(&ptr, data);
		}
		else if(select == 3)
		{
			printlist(ptr);
		}
		else if(select == 4)
		{
			break;
		}
		else
		{
			printf("select error\n");
		}
	}
}

void insert(node_ptr *pptr, int data)
{
	node_ptr temp;
	temp = (node_ptr)malloc(sizeof(node));
	temp->data = data;
	temp->next = *pptr;
	*pptr = temp;
}

void deletee(node_ptr *pptr, int data)
{
	node_ptr ptr, preptr;
	preptr = *pptr;
	
	if(preptr == NULL)
	{
		printf("NO data\n");
		return;
	}
	else if(preptr->data == data)
	{
		*pptr = (*pptr)->next;
		free(preptr);
		return;
	}
	ptr = preptr->next;
	while (ptr->data!=data && ptr->next!=NULL)
	{
		preptr = preptr->next;
		ptr = preptr->next;
	}
	if(ptr->data == data)
	{
		preptr->next = ptr->next;
		free(ptr);
	}
	else
	{
		printf("Not found\n");
	}
}

void printlist(node_ptr ptr)
{
	for(; ptr; ptr=ptr->next)
		printf("%d ",ptr->data);
	printf("\n");
}
반응형

'C++ 언어' 카테고리의 다른 글

C/C++ 소수점 출력 - cout.setprecision()  (0) 2022.07.02
6. C/C++ 연결리스트  (0) 2021.01.18
5. C/C++ 함수 기초  (0) 2020.11.23
4. C/C++ 동적 메모리  (0) 2020.11.05
3. C/C++ 연산자  (0) 2020.09.25
Posted by 명문코딩컴퓨터
,