C로 짠 프로그램입니다....

hwoney의 이미지

#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은 입력 받고 출력만 해주게해놨습니다..;;
//컴파일은 잘 되는데
//실행시키면
// #을 입력해도 계속 입력받기만하고
//다음으로 넘어가지를 않네요...
//어디가 문제인지 잘 모르겠어요...;;
//고수님들 도와주세요~

kihoori의 이미지

void Input(NodeType **L){ 
valueCode A; 
printf("데이터를 입력하세요\n"); 
scanf("%s",A); //여기 주의;; <-- 이부분에 scanf가 틀린거 같은데.. 이부분이 문제가 아닐까요??

InsertNewFirstNode(A,L); 

while(A!="#"){ 
scanf("%s",&A); 
InsertNewFirstNode(A,L); 
} 
hwoney의 이미지

어찌해야 좋을지 몰라서 TT^TT
제가 포인터 등등 메모리 나오면
@_@;;;
당황해서;;;
프로그래밍을 잘 못하거든여;;;

자세히 설명해주세용^▽^

kihoori의 이미지

scanf("%s",A); //여기 주의;; <-- 이 부분과

scanf("%s",&A); <-- 이부분을 보시면 차이를 아시겠죠??

그리고

while(A!="#"){ 
scanf("%s",&A); 
InsertNewFirstNode(A,L); 
} 

이렇게 반복문 조건을 저렇게 주셨는데요..
A 가 char 배열이니깐 저렇게 비교를 하면 안되고 strcmp를 이용하셔야 할거에요..

if(strcmp(N->Value,M->Value)>0) 요렇게

hwoney의 이미지

무슨 뜻이신지 이해가 될듯해요^^
친절히 설명해주셔서
너무 감사해요~*
다시 코딩해보도록 할께요^^

cdpark의 이미지

kihoori wrote:
scanf("%s",A); //여기 주의;; <-- 이 부분과

scanf("%s",&A); <-- 이부분을 보시면 차이를 아시겠죠??

scanf("%s", A); 가 맞는데요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.