C 연결리스트 코드 수정부탁드립니다ㅠ
-
게시물 수정 , 삭제는 로그인 필요
#include <stdio.h>
#include <stdlib.h>
#define Max 5
struct node{ /* 노드 구조체 정의 */
int data;
struct node* next;
};
struct Linkedlist{ /* 연결리스트 구조체 정의 */
public:
node* Head;
node* Tail;
Linkedlist(){};
~Linkedlist(){};
void Create();
void Remove(int);
void Add(int);
void Print();
bool Empty();
bool Full();
};
void Linkedlist.Print(){ /* 출력문 */
Head = Head -> next;
while(Head->next!=Tail){
Head = Head->next;
printf(" -> %d", Head->data);
}
if(Empty()){
printf(" 모두 출력 완료 !\n\n");}
}
void Linkedlist.Create(){ /* 생성문 */
Head = Tail = new node;
Head->next=NULL;
}
void Linkedlist.Remove(int n){ /* 삭제문 */
if(Empty())
return;
node* find = Head;
node* del;
if(find->next->data != n)
find->next = find->next->next;
else if(find->next->data == n){
printf(" 를 가진 노드를 삭제합니다\n\n");
del = find->next;
find->next = find->next->next;
delete del;}
else
printf(" 입력하신 데이터값을 가지고 있는 노드는 존재하지 않습니다\n");
}
void Linkedlist.Add(int n){ /* 삽입문 */
if(Full())
return;
node* add = new node;
add->data = n;
add->next = NULL;
Tail->next = add;
Tail = add;
printf(" 데이터 %d의 값을 노드에 저장하였습니다\n\n", &n);
}
bool Linkedlist.Empty(){ /* 노드가 비어있는지 여부 */
if(Head->next == NULL){
printf(" 연결리스트의 노드가 비어있습니다\n");
return true;}
else
return false;
}
bool Linkedlist.Full(){
node* count = Head->next;
int m = 0;
while(count){
m++;
count = count->next;}
if(m >= Max){
printf(" 연결리스트의 노드가 모두 찼습니다\n");
return true;}
else
return false;
}
void main(){ /* 메인문 */
int a=1;
int b=0;
int c=0;
Linkedlist List;
Linkedlist *P = 0;
P = &List;
while(a){
printf("\n -- 메뉴 -- \n");
printf(" 1. 입력\n");
printf(" 2. 삽입\n");
printf(" 3. 삭제\n");
printf(" 4. 출력\n");
printf(" 5. 종료\n");
printf(" 메 뉴 : ");
scanf_s("%d",&b);
switch(b){
case 1:{
P->Create();
printf(" Head를 생성하였습니다\n\n");break;}
case 2:{
printf(" 저장할 데이터 입력 : ");
scanf_s("%d",&c);
P->Add(c);break;}
case 3:{
printf(" 삭제할 데이터 입력 : ");
scanf_s("%d",&c);
P->Remove(c);break;}
case 4:{
P->Print();break;}
case 5:{
printf(" 프로그램을 종료합니다\n");
a = 0;break;}
}
}
}
실행하면 자꾸 C를 사용하려면 구조체 또는 공용 구조체에 멤버가 하나 이상 있어야 합니다.
라고 오류가 뜹니다.. 구조체선언이 잘못된건가요?ㅠ 도와주세요
#include <stdio.h>
#include <stdlib.h>
#define Max 5
struct node{ /* 노드 구조체 정의 */
int data;
struct node* next;
};
struct Linkedlist{ /* 연결리스트 구조체 정의 */
public:
node* Head;
node* Tail;
Linkedlist(){};
~Linkedlist(){};
void Create();
void Remove(int);
void Add(int);
void Print();
bool Empty();
bool Full();
};
void Linkedlist.Print(){ /* 출력문 */
Head = Head -> next;
while(Head->next!=Tail){
Head = Head->next;
printf(" -> %d", Head->data);
}
if(Empty()){
printf(" 모두 출력 완료 !\n\n");}
}
void Linkedlist.Create(){ /* 생성문 */
Head = Tail = new node;
Head->next=NULL;
}
void Linkedlist.Remove(int n){ /* 삭제문 */
if(Empty())
return;
node* find = Head;
node* del;
if(find->next->data != n)
find->next = find->next->next;
else if(find->next->data == n){
printf(" 를 가진 노드를 삭제합니다\n\n");
del = find->next;
find->next = find->next->next;
delete del;}
else
printf(" 입력하신 데이터값을 가지고 있는 노드는 존재하지 않습니다\n");
}
void Linkedlist.Add(int n){ /* 삽입문 */
if(Full())
return;
node* add = new node;
add->data = n;
add->next = NULL;
Tail->next = add;
Tail = add;
printf(" 데이터 %d의 값을 노드에 저장하였습니다\n\n", &n);
}
bool Linkedlist.Empty(){ /* 노드가 비어있는지 여부 */
if(Head->next == NULL){
printf(" 연결리스트의 노드가 비어있습니다\n");
return true;}
else
return false;
}
bool Linkedlist.Full(){
node* count = Head->next;
int m = 0;
while(count){
m++;
count = count->next;}
if(m >= Max){
printf(" 연결리스트의 노드가 모두 찼습니다\n");
return true;}
else
return false;
}
void main(){ /* 메인문 */
int a=1;
int b=0;
int c=0;
Linkedlist List;
Linkedlist *P = 0;
P = &List;
while(a){
printf("\n -- 메뉴 -- \n");
printf(" 1. 입력\n");
printf(" 2. 삽입\n");
printf(" 3. 삭제\n");
printf(" 4. 출력\n");
printf(" 5. 종료\n");
printf(" 메 뉴 : ");
scanf_s("%d",&b);
switch(b){
case 1:{
P->Create();
printf(" Head를 생성하였습니다\n\n");break;}
case 2:{
printf(" 저장할 데이터 입력 : ");
scanf_s("%d",&c);
P->Add(c);break;}
case 3:{
printf(" 삭제할 데이터 입력 : ");
scanf_s("%d",&c);
P->Remove(c);break;}
case 4:{
P->Print();break;}
case 5:{
printf(" 프로그램을 종료합니다\n");
a = 0;break;}
}
}
}
실행하면 자꾸 C를 사용하려면 구조체 또는 공용 구조체에 멤버가 하나 이상 있어야 합니다.
라고 오류가 뜹니다.. 구조체선언이 잘못된건가요?ㅠ 도와주세요
#c 연결리스트 #c 연결리스트 구현 #c 연결리스트 특정 노드 삭제 #c 연결리스트 오름차순 정렬 #c 연결리스트 정렬 #c 언어 연결리스트