C로 짠 프로그램입니다....
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// node 선언
typedef char valueCode[5];
typedef struct NodeTag{
valueCode Value;
struct NodeTag *Link;
}NodeType;
NodeType *X,*Y,*Z;
// 맨 뒤에 node 삽입하는 함수
void InsertNewLastNode(char *A, NodeType **L){
NodeType *N,*P;
N=(NodeType *)malloc(sizeof(NodeType));
strcpy(N->Value,A);
N->Link=NULL;
if(*L==NULL){
*L=N;
}else{
P=*L;
while(P->Link!=NULL){
P=P->Link;
}
P->Link=N;
}
}
// 맨 처음에 node 삽입하는 함수
void InsertNewFirstNode(char *A, NodeType **L){
NodeType *N,*P;
N=(NodeType *)malloc(sizeof(NodeType));
strcpy(N->Value,A);
N->Link=NULL;
if(*L==NULL){
*L=N;
}else{
P=*L;
N->Link=P;
*L=N;
}
}
// 개수 세는 함수
int Counter(NodeType *L){
int counter;
NodeType *N;
N=L;
counter=0;
while(N->Link!=NULL){
counter++;
N=N->Link;
}
return counter;
}
// 맨 앞에 node 삭제하는 함수
void DeleteFirstNode(NodeType **L){
NodeType *F;
if(*L !=NULL){
if((*L)->Link==NULL){
free(*L);
*L=NULL;
}else{
F=(*L)->Link;
free(*L);
}
}
}
// 사용자에게 value를 입력 받는 함수
void Input(NodeType **L){
valueCode A;
printf("데이터를 입력하세요\n");
scanf("%s",A); //여기 주의;;
InsertNewFirstNode(A,L);
while(A!="#"){
scanf("%s",&A);
InsertNewFirstNode(A,L);
}
}
// 오름차순으로 정렬하는 함수
void NoneDecreasing(NodeType **L){
int n,i,j;
NodeType *M,*N,*P;
N=*L;
P=N;
M=N->Link;
n=Counter(*L);
for(i=1;i<n;i++){
for(j=++i;j<n;j++){
if(strcmp(N->Value,M->Value)>0){
P->Link=M;
N->Link=M->Link;
M->Link=N;
}
M=M->Link;
}
P=N;
N=N->Link;
M=N->Link;
}
N->Link=NULL;
*L=P;
}
// 프린트하는 함수
void Print(NodeType *L){
NodeType *N;
N=L;
while(N->Link!=NULL){
printf("%s\n",N->Value);
N=N->Link;
}
}
// 역순으로 바꿔주는 함수
void Reverse(NodeType **L){
NodeType *L1,*L2;
L1=*L;
while(L1->Link!=NULL){
InsertNewFirstNode(L1->Value,&L2);
DeleteFirstNode(&L1);
L1=L1->Link;
}
}
main(){
int a;
printf("X=1 Y=2\n");
scanf("%d",&a);
switch(a){
case 1: Input(&X);
Print(X);
break;
case 2: Input(&Y);
Print(Y);
break;
}
}
//-------------------------------------------------
//자료구조 배우면서 linked list를 입력받아
//개수를 세고, 역순으로 만들고
//출력하고, 오름차순으로 만드는 프로그램입니다..
//시험삼아 mian은 입력 받고 출력만 해주게해놨습니다..;;
//컴파일은 잘 되는데
//실행시키면
// #을 입력해도 계속 입력받기만하고
//다음으로 넘어가지를 않네요...
//어디가 문제인지 잘 모르겠어요...;;
//고수님들 도와주세요~
아마도
흠...저두 그부분이 이상한거 같은데.....
어찌해야 좋을지 몰라서 TT^TT
제가 포인터 등등 메모리 나오면
@_@;;;
당황해서;;;
프로그래밍을 잘 못하거든여;;;
자세히 설명해주세용^▽^
scanf("%s",A); //여기 주의;; <-- 이 부분과
scanf("%s",A); //여기 주의;; <-- 이 부분과
scanf("%s",&A); <-- 이부분을 보시면 차이를 아시겠죠??
그리고
이렇게 반복문 조건을 저렇게 주셨는데요..
A 가 char 배열이니깐 저렇게 비교를 하면 안되고 strcmp를 이용하셔야 할거에요..
if(strcmp(N->Value,M->Value)>0) 요렇게
ㅇ ㅏ~
무슨 뜻이신지 이해가 될듯해요^^
친절히 설명해주셔서
너무 감사해요~*
다시 코딩해보도록 할께요^^
[quote="kihoori"]scanf("%s",A); //여기 주의;
scanf("%s", A); 가 맞는데요?
댓글 달기