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

struct abc
{
    int data;
    struct abc *next;
};

void Ins(struct abc *s, int k)
{
    struct abc *node=malloc(sizeof(struct abc));
    node->next=s->next;
    node->data=k;
    s->next=node;
}

void Del(struct abc *s,int k)
{
    struct abc *node=malloc(sizeof(struct abc));
    struct abc *i=malloc(sizeof(struct abc));

    for(i=s;i!=NULL;i=i->next)
    {
        if(i->next->data==k)
        {
            node=i->next;
            i->next=i->next->next;
            break;
        }
    }
    free(node);
}

void Add(struct abc *s,int k)
{
    struct abc *node=malloc(sizeof(struct abc));
    struct abc *i=malloc(sizeof(struct abc));

    for(i=s;i!=NULL;i=i->next)
    {
        if(i->next->next==NULL)
        {
            i->next->next=node;
            break;
        }
    }
    node->data=k;
    node->next=NULL;
}

int main()
{
    struct abc *start, *i;
    int a,n;

    start=malloc(sizeof(struct abc));

    start->next=NULL;
 
    while(1)
    {
        printf("1.삽입\n2.종료\n3.삭제\n4.추가\n번호:");
        scanf("%d",&n);

        if(n==2) return 0;

        if(n==1)
        {
            printf("삽입할 자료:");
            scanf("%d",&a);
            Ins(start,a);
        }

        if(n==3)
        {
            printf("삭제할 자료:");
            scanf("%d",&a);
            Del(start,a);
        }

        if(n==4)
        {
            printf("추가할 자료:");
            scanf("%d",&a);
            Add(start,a);
        }

        i=start->next;

        while(i!=NULL)
        {
            printf("%d\n",i->data);
            i=i->next;
        }
        printf("\n");
    }

    return 0;
}

 

반응형

'전공 공부 > C' 카테고리의 다른 글

구조체(평균, 석차 , 막대 그래프)  (0) 2020.12.28
파일 읽기(점수 평균 구하기)  (0) 2020.12.28
m/n 소수 x자리까지 구하기  (0) 2020.12.28
숫자 맞추기  (0) 2020.12.27
반복되는 수  (0) 2020.12.27
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기