단일링크드 질문입니다
멱부리
소스가 기니까 에러나는 부분만 말씀드릴게요.. 거기만 봐주세요 ㅠㅠ
빨간색 된부분요
중간에 수를 탐색해서 목을 넣는건데..아.....안돼요 ㅠㅠ 어케하면되죵 ㅠㅠ
#include stdio.h
#include stdlib.h
#include string.h
typedef struct listNode{
char data[10];
struct listNode* link;
} listNode;
typedef struct{
listNode* head;
} linkedList_h;
linkedList_h* createLinkedList_h(void);
listNode* searchNode(linkedList_h*, char*);
void freeLinkedList_h(linkedList_h*);
void addFirstNode(linkedList_h*, char*);
void addLastNode(linkedList_h*, char*);
void reverse(linkedList_h*);
void deleteLastNode(linkedList_h*);
void printList(linkedList_h*);
void insertMiddleNode(linkedList_h*, char*, char*);
//void searchNode(linkedList_h*, char*);
linkedList_h* createLinkedList_h(void){
linkedList_h* L;
L = (linkedList_h*)malloc(sizeof(linkedList_h));
L - head = NULL;
return L;
}
void addFirstNode(linkedList_h* L, char* x){
listNode* newNode;
newNode = (listNode*)malloc(sizeof(listNode));
strcpy(newNode-data, x);
newNode-link = L-head;
L-head = newNode;
}
void addLastNode(linkedList_h* L, char* x){
listNode* newNode;
listNode* p;
newNode = (listNode*)malloc(sizeof(listNode));
strcpy(newNode-data, x);
newNode-link= NULL;
if (L-head == NULL){
L-head = newNode;
return;
}
p = L-head;
while (p-link != NULL) {
p = p-link;
}
p -link = newNode;
}
listNode* searchNode(linkedList_h* L, char* x)
{
listNode* newNode;
listNode* temp;
newNode = (listNode*)malloc(sizeof(listNode));
strcpy(newNode-data, x);
if( L-head == NULL)
{
L-head = newNode;
return L; //경고가 나는데요 이건리턴형식이 linkedList_h;로 되야하는건가요?
}
for(temp=L-head;temp!=NULL;temp=temp-link);
{
if(temp-link-data==x)
break; //아.. 여기 이게 에러나요..error C2043: illegal break 이런에러가..
}
/*
while( temp!=NULL)
{
if ( temp-data == x)
break;
temp = temp-link;
}
*/
return temp;
}
void insertMiddleNode(linkedList_h* L, char* data1, char* data2){
listNode* newNode;
listNode* p;
listNode* q;
//listNode* searchNode();
newNode = (listNode*)malloc(sizeof(listNode));
strcpy(newNode-data, data2);
if ( L-head == NULL ){
L-head = newNode;
newNode-link = NULL;
}
else
{
p = searchNode(L, data1);
q = searchNode(L, data2);
if( p != NULL )
{
newNode-link=p;
newNode-link=NULL;
}
}
}
void reverse(linkedList_h * L){
listNode* p;
listNode* q;
listNode* r;
p = L-head;
q=NULL;
r=NULL;
while (p!= NULL){
r = q;
q = p;
p = p-link;
q-link = r;
}
L-head = q;
}
void deleteLastNode(linkedList_h * L){
listNode* previous;
listNode* current;
if (L-head == NULL) return;
if (L-head-link == NULL) {
free(L-head);
L-head = NULL;
return;
}
else {
previous = L-head;
current = L-head-link;
while(current -link != NULL){
previous = current;
current = current-link;
}
free(current);
previous-link = NULL;
}
}
void freeLinkedList_h(linkedList_h* L){
listNode* p;
while(L-head != NULL){
p = L-head;
L-head = L-head-link;
free(p);
p=NULL;
}
}
void printList(linkedList_h* L){
listNode* p;
printf(L = ();
p= L-head;
while(p != NULL){
printf(%s, p-data);
p = p-link;
if(p != NULL){
printf(, );
}
}
printf() \n);
}
int main(){
linkedList_h* L;
L = createLinkedList_h();
printf((1) 공백리스트 생성하기! \n);
printList(L); getchar();
printf((2) 리스트에 3개의 노드 추가하기! \n);
addLastNode(L, 월);
addLastNode(L, 수);
addLastNode(L, 금);
printList(L); getchar();
printf((3) 리스트 마지막에 노드 한개 추가하기! \n);
addLastNode(L, 토);
printList(L); getchar();
printf((3.1) 리스트 처음에 노드 한개 추가하기! (실습) \n);
addFirstNode(L, 일);
printList(L); getchar();
printf((3.2) 데이터를 검색하여 그 전에 노드 한개 추가하기! (실습) \n);
insertMiddleNode(L, 금, 목);
printList(L); getchar();
printf((4) 마지막 노드 삭제하기! \n);
deleteLastNode(L);
printList(L); getchar();
printf((5) 리스트 원소를 역순으로 변환하기! \n);
reverse(L);
printList(L); getchar();
printf((6) 리스트 공간을 해제하여, 공백리스트 상태로 만들기! \n);
freeLinkedList_h(L);
printList(L);
getchar();
return 0;
}
-
꼬꼬마
1. listNode* 타입을 리턴하게 만드신 것 같은데요. newnode가 아닌가요?
2. for문에 세미콜론을 지우세요
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2693727 | scanf 오류 문제!! (2) | 큰나래 | 2025-05-04 |
2693704 | 구조체 주소록 문제인데 도와주세요 (2) | 도1도캣 | 2025-05-04 |
2693676 | 열혈강의 c언어 질문입니다 | 하양이 | 2025-05-04 |
2693647 | 12.620000 을요 12.620 으로 어떻게 표현해요? (2) | 파도 | 2025-05-04 |
2693619 | 타이틀 코드.. | 단순드립 | 2025-05-03 |
2693591 | 컴파일 에러에서 질문드립니다 (3) | 게자리 | 2025-05-03 |
2693463 | 동적할당 이용시 fwrite사용을 어떻게 해야하나요..? (10) | 일본어못해요 | 2025-05-02 |
2693387 | 배열문제입니다 수정오류캡쳐했습니다 (6) | 연하얀 | 2025-05-01 |
2693356 | text 입출력 내림차순 질문입니다 ㅠ | 빛글 | 2025-05-01 |
2693328 | C언어를이용해서 .txt파일 외에 다른 확장자 파일 삭제가 가능한지.. (2) | 대나무 | 2025-05-01 |
2693299 | 파일입출력 바이너리파일 | 독특한 | 2025-04-30 |
2693273 | 오류 (1) | 귀1여운렩 | 2025-04-30 |
2693080 | visual studio 2008 express edition 등록키 말인데요 | 얀별 | 2025-04-28 |
2693053 | 배열, 구조체 관련 프로그래밍 질문드립니다. | 싸리 | 2025-04-28 |
2693025 | 프로그램을 짜봤는데요 ㅠㅠ | 상처입은마음 | 2025-04-28 |
2693001 | 워닝문제, 세그멘트결함문제 (1) | 월식 | 2025-04-28 |
2692979 | 라인한줄 이랑.. 소스 설명좀 부탁드려요.. | 이루리 | 2025-04-27 |
2692947 | 이 문제좀 풀어 주세요..ㅜㅜ (1) | 소리 | 2025-04-27 |
2692889 | 함수의 구조체 인자로 받아서 그 인자로 데이터 넣기... | 한뎃집 | 2025-04-27 |
2692862 | 성적 출력 하는 프로그램인데요~!!!도움좀 주세욤.ㅠ | 두빛나래 | 2025-04-26 |