linked list ?
#include <stdio.h>
#include <stdlib.h>
struct node
{
int stu_num;
char stu_name[20];
struct node * link;
};
typedef struct node list_node;
typedef list_node * list_ptr;
list_ptr create();
list_ptr find(list_ptr list,int x);
void insert(list_ptr *ptr,list_ptr node);
void avail(list_ptr *ptr, list_ptr trail, list_ptr node) ;
void print_list(list_ptr ptr);
void main()
{
list_ptr student = create();
list_ptr trash = NULL;
char input = '0';
while(1)
{
printf("원하는 동작 입력.(i삽입 d삭제 r읽기 f탐색 q종료)");
// scanf("%c",input);
// if(input = 'i')
{insert(&student,student->link);}
// else if(input = 'd')
// {avail(&student, trash, student->link);}
// else if (input = 'r')
// { print_list(student);}
// else if (input = 'f')
{
int n;
char data[40];
printf("찾을 번호 입력.");
scanf("%d", &n);
trash = find(student, n);
if (trash)
{
printf("%s",trash->stu_name);
printf("%d",trash->stu_num);
}
else
printf("null");
}
// else if (input = 'q')
{
// fprintf(stderr,"종료합니다.");
// exit(1);
}
// else
{
// fprintf(stderr,"err");
// exit(0);
}
}
}
list_ptr create()
{
list_ptr first, second;
first = (list_ptr)malloc(sizeof(list_node));
second = (list_ptr)malloc(sizeof(list_node));
second->link=NULL;
second->stu_num = 0;
second->stu_name == "0";
first->stu_num = 0;
first->stu_name == "0";
first->link=second;
return first;
}
list_ptr find(list_ptr list,int x)
{
list_ptr temp;
temp=list;
while((temp!=NULL)&&(temp->stu_num!=x))
{temp=temp->link;}
if(temp->stu_num==x) {return temp;}
else {return NULL;}
}
void insert(list_ptr *ptr,list_ptr node)
{
list_ptr temp;
int no;
temp=(list_ptr)malloc(sizeof(list_node));
if(!temp)
{
fprintf(stderr,"err");
exit(1);
}
printf("학번 입력.");
scanf("%d",&no);
fflush(stdin);
temp->stu_num = no;
printf("이름 입력.");
scanf("%s",&temp->stu_name);
fflush(stdin);
if(*ptr)
{
temp->link = node->link;
node->link = temp;
}
else
{
temp->link = NULL;
*ptr = temp;
}
}
void avail(list_ptr *ptr, list_ptr trail, list_ptr node)
{
if(trail) /* 노드가 여러 개 있는 경우 */
trail->link = node->link;
else /* 노드가 한 개 밖에 없는 경우 */
*ptr = (*ptr)->link;
free(node);
}
void print_list(list_ptr ptr)
{
printf("The list contains: ");
for( ; ptr; ptr = ptr->link)
printf("%d %s", ptr->stu_num, ptr->stu_name);
printf("\n");
}