반응형
◆ 단순 연결리스트
#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 |