#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
struct Item
{
struct Item *next;
int data;
char *name;
};
struct Item* FindItem(struct Item *head, char *name)
{
struct Item *curr = head;
while(curr)
{
if(curr->next != NULL)
{
if(curr->next->name == name)
{
return curr;
}
}
curr = curr->next;
}
return NULL;
}
void CreateItem(struct Item *head,char *name)
{
struct Item *node = malloc(sizeof(struct Item));
node->name = name;
node->data = NULL;
node->next = NULL;
struct Item *curr = head;
while(curr)
{
if(curr->next == 0)
{
curr->next = node;
break;
}
curr = curr->next;
}
}
int main()
{
struct Item *head = malloc(sizeof(struct Item));
head->data = 0;
head->next = NULL;
char* s1[100];
const char* str1 = "생성";
const char* str2 = "출력";
struct Item *node;
while(1)
{
scanf("%s",s1);
//생성할떄 같은아이템 체크하고 그기에 +1 하거나 없으면 뒤에 생성하는데
//이부분 성능이 반복문 2배나 드가니 성능안좋아보임..
//해결법있나요?
if (strcmp(s1, str1) == 0)
{
node = FindItem(head,"사탕");
if(node != NULL)
{
node->next->data += 1;
}
else
{
CreateItem(head,"사탕");
}
}
if (strcmp(s1, str2) == 0)
{
Print(head);
}
}
return 0;
}
병신아 그걸왜고민함 실제로 그지랄로 안넣어 병신아
개패고싶네 시발 의미없는거 공부쳐하고지럴이여
위에 무시하고 리스트만 쓰면 저게 정석 맞음 싫으면 데이터 존재 판단용 자료구조를 추가하던가 해야해
아니 다시보니까 생성할때도 검색을하네 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아니 그럼 find해서 널이면 그냥 맨 위에 생성하면 되잖아
데이터 존재판단용이라 흠 어캐 짜야하지 알고리즘
다시생각해보니 find해서 널이면 맨위에 생성이라는말이 원형 연결리스트 로해서 head prev에 바로 입력ㅎ란거지?
원형리스트 맞음? 아닐텐데 새노드에 기존 리스트 연결해서 머리노드만 갈아끼우면 되잖아
내가 생각한방법은 prev 연결리스트 하나더만들어서 head->prev로 바로가서 생성하는방법인데 음 맨위에 어캐 바로 생성해? 알고리즘 대충만 알려줄수잇나
struct Item* CreateItem(char *name, struct Item *curr_head); head = CreateItem(char *name, head); 이해 안되면 좀더 구체적으로 써볼게
head->next = CreateItem(char *name, head->next);로 바꿔야 맞을듯
아이템 생성함수도 리턴 만들어야하나
아 이게 수정하니 말이 이상하다 지금 head -> A -> B -> C 맞지?
ㅇㅇ 맞음
head -> NEW -> A -> B -> C 이렇게 추가
ㅇㅇ; 그리고보니까 내가 무조건 뒤에다가 생성할려고했네 앞에다가 생성하는것도 나쁘지않네
너가 말한 반복문 두번이 이거 맞음?
struct Item *temp = head->next->next; node->next = temp; head->next = Newnode; 이거 오류나겠지? 반복문안쓰고 생성함수에 하면 흠 맨앞으로하는것도 알고리즘 모르겠네 어캐짜야할지
새 노드 초기화는 귀찮으니 넘기고 new -> next = head -> next; head -> next = new; 이렇게 안됨?
오 ㄳ 연결리스트가 코드한줄마저 어렵긴하네 구현이.. 구현 미리 해놓으면 나중에 가독성도 알아보기쉽고 좋긴한데
굿굿 혹시혹시해서 물어보는데 ㅈㄶ 교수님 수업 아니지?
ㅇㅇ아님 나 게임개발중이라 연결리스트로 할려고햇어 배열은 가독성 너무 떨여저서 코드많아지면 못알아먹겠더라고
ㅅㅂ 머리아프네 역시 라이브러리는 뜯어보지 않는게 정신건강에 좋다.