>> Delete No. 35202 article
No. c언어인데 여기에 올려서 죄송합니다. 근데
몰라서리..고수님 부탁

등록 2001-11-17 17:50:00 By localhost     조회 1
이름 하수    

		안녕하세요.. 이것갖고 거의 24시간을 소비했더니 죽음입니다.
잘못된 부분좀 찾아주세요...
 더불 링크리스트를 여러개 만들어서 nmae과 data를 넣는 프로그램입니다.그리고 출력 하는 
거져.. 그런 데.. 1개를 만들면 아무 이상이 없는데
2개 이상을 만들게 되면. 마지막의 링크리스트의 name이 다른 링크리스트의 name값에 덮어집
니다. 즉 1번 의 name이 a 이고 2번 name b라고 입력하면 1번 이름도 b 2번 이름도b가 됩니다. ㅡ
ㅡ; 고수님들의 가르침 부탁합니다. 링크리스트 처음 쓰는데 넘 복잡하네요.
쏘스입니다. 꼭 아시는분은 가르쳐 주세요..
         typedef struct ch_node *ch_ptr;
typedef struct ch_node { ch_ptr llink;char *data; ch_ptr rlink;};
  ch_ptr creat(int h);
void prints(ch_ptr para);
int len(ch_ptr para);
   
     
void main()
{
    ch_ptr sptr[20]; //각 링크리스트를 가르키는 주소값을 저장합니다.
    ch_ptr para;     //함수간 전달때 사용함
    int menu,i;
    char *sname;     //찾을 name을 입력받을 포이터
    int h=0;
      for(;;)
   {
    printf (" selcet command");      //메뉴
    printf("1: creat 2: lenth 3: copy 4:  cocat");
    printf("5: index 6: substr 7: first 8: printfs 0:exit ->");
     scanf("%d",&menu);
      switch (menu)
    {
        case 1:  링크리스트 생성
                sptr[h]=creat(h); 생성된 링크리스트의 주소 값을 전달 받는다.
            h++; 다음 번 링크리스를 생성하면 두번째 3번째 배열에 넣기 위해
                            break;
       
                        para=sptr[i];
            printf("%d",len(para));
            break;
                   
         case 8: printf("%s",sptr[0]->data);
            printf("%c",sptr[0]->rlink->data);
            printf("%s",sptr[1]->data);
                        printf("%c",sptr[1]->rlink->data);
            printf("input the string name");
            scanf("%s",sname);
                             
             for(i=0;i<21;i++)
             {
                   if (strcmp(sptr[i]->data,sname));  찾는 이름과 같은 링크리스트를 찾음
     
                     else break;
              }
             if(i==21)
            {
                printf("You have the wrong name");
                exit(1);
            }
                    para=sptr[i];
            prints(para);
                        break;
                     
         case 0:
            printf("Thank you for using my software bye-bye");
                        exit(0);
      }             
   }
    }
 ch_ptr creat(int h)
{
     char *name;
    char sam[20];
    int i;
        ch_ptr sptr[20];
      printf("input name& string");
    scanf("%s",name);
    scanf("%s",sam);
     ch_ptr temp, temp1;
     temp=(ch_ptr)malloc(sizeof(ch_node));// name을 입력 받을 노드 생성
      if(IS_FULL(temp))
    {
        fprintf(stderr,"THE MEMORY IS FULL");
        exit(1);
    }     
    temp->data=name;
    sptr[h]=temp;
    temp->llink=temp; temp->rlink=temp;
     for(i=0;sam[i]!='';i++)     //charcater를 입력 받을 노드들..
    {
        temp1=(ch_ptr)malloc(
sizeof(ch_node));
        if(IS_FULL(temp1))
        {
         fprintf(stderr,"THE MEMORY IS FULL");
    
     exit(1);
                 }
        temp1->data=(char *)sam[i];
         temp1->rlink=temp->rlink
;
        temp->rlink=temp1;
        temp1->llink=temp;
                temp->rlink->llink=temp1;
    
    temp=temp1;
    }
       return (sptr[h]);
                
}
    void prints(ch_ptr para)       
선택된 링크리스트 출력
 {
    ch_ptr ltemp;
    ltemp=para->rlink;
    for(;ltemp!=para;ltemp=ltemp->rlink
)
   {
    printf("%c",ltemp->data);
   }
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved