모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    황금님의
    개인페이지입니다
    가입 : 10-07-01
    방문 : 2770회
    닉네임변경 이력
    회원차단
    회원차단해제
     

    황금님의 댓글입니다.
    번호 제목 댓글날짜 추천/비공감 삭제
    817 오랜만에 다시 접속한 마영전. 낫비를 키웁니다. [새창] 2014-06-30 18:10:56 0 삭제
    1 이비 캐릭터에 애정을 갖고있긴 한데.. 키우기가 많이 어렵나요?
    816 원 게시글이 삭제되었습니다. [새창] 2014-06-29 03:35:13 0 삭제
    추천은 드릴게
    815 C 숙련자를 위한 (변태적인) 간단한 문제. [새창] 2014-06-23 18:34:14 0 삭제
    와 ㅋㅋ 재밌는거 하나 배워가네요
    814 사연이 있는 노래 좀 알려주세요 [새창] 2014-06-15 22:34:59 1 삭제
    드렁큰 타이거 - 8:45
    http://youtu.be/PAUeXCaP-OQ
    813 락, 메탈 잘 아시는분~! 추천 해주세요! [새창] 2014-06-15 00:31:14 0 삭제
    http://youtu.be/VMcWJZweha4

    이런건 어때요
    812 기타와 드럼소리가 매력적인노래? .. 추천좀 부탁드릴게요~ [새창] 2014-06-14 23:32:52 1 삭제
    http://youtu.be/W9RZWvuhgHA

    http://youtu.be/WhFzTUsaYIg

    http://youtu.be/v_09wFxoaeQ

    http://youtu.be/BTQQtTU-paU

    http://youtu.be/aCyGvGEtOwc

    http://youtu.be/CdhqVtpR2ts

    http://youtu.be/CSvFpBOe8eY
    810 우리 주위에 있는 흔한 여자 [새창] 2014-06-10 20:07:01 1 삭제
    흔하게 볼 수 있는 여자 맞네요.. 2D로..
    809 방문횟수 확인 [새창] 2014-06-01 14:06:58 0 삭제
    .
    808 원 게시글이 삭제되었습니다. [새창] 2014-05-29 11:09:14 0 삭제
    아이언멘 방어력 좋아보인다
    807 미대에서 A+ 받은 작품 뒷이야기 [새창] 2014-05-25 14:28:31 0 삭제
    아 모바일 익숙치않아 반대 잘못 눌렀네요 ㅜㅜ
    806 C언어 질문 하나만 드릴게요 ㅠ [새창] 2014-05-22 04:02:05 0 삭제
    어쩌다 이리됐지... 궁금한거 있으심 오늘 중 댓글 달아주세요 확인하고 답글 달아드릴게요
    805 C언어 질문 하나만 드릴게요 ㅠ [새창] 2014-05-22 04:00:46 1 삭제
    동적 할당을 해준다는건 할당 된 객체를 소멸시켜야 한다는 의미이기도 합니다

    할당과 소멸을 어디서 할 지를 생각하는게 좋을것같은데요

    일단 할당에 대해서는 함수로 보면

    dates* CreateData(int day, int month, char* a) {
    dates* data = new dates;
    data->day = day;
    data->month = month;
    int len = strlen(a);
    data->a = new char[len + 1];
    sprintf(data->a, a);
    return data;
    }

    같은 함수를 사용해서 하면 될것같구요 해당 객체의 소멸은

    void DeleteData(dates* data) {
    delete[] data->a;
    delete data;
    }

    이와 같이 할당 된 객체들을 소멸시켜주는 함수를 만들어 사용하면 될 것 같네요

    만약 day 와 month 만 받고 a 는 다른곳에서 따로 받고싶다면 두가지 함수를 모두 수정해야 하는데

    이유는 a 가 동적 할당된 상태인데 새로운 할당을 하면서 기존 할당된 메모리가 삭제되지 않을 수 있기 때문이죠

    해서 위의 함수들을 약간 변형해서 다음과 같이 만듭니다

    dates* CreateData(int day, int month) {
    dates* data = new dates;
    data->day = day;
    data->month = month;
    data->a = 0;
    return data;
    }

    void SetString(dates* data, char* a) {
    if (data->a != 0) {
    delete data->a;
    }

    int len = strlen(a);
    data->a = new char[len + 1];
    sprintf(data->a, a);
    }

    void DeleteData(dates* data) {
    if (data->a != 0) {
    delete[] data->a;
    }
    delete data;
    }


    여기서 a=0; 이라 적힌 부분은 a가 아직 할당되지 않은 상태라는걸 명확히 표현해주는 부분인데요

    이는 중복 할당 혹은 중복 제거를 하지 않기 위함입니다.

    만약 a에게 무엇인가를 할당 해 주었다면 그 할당 된 주소값을 a가 저장할테지만, a가 0 이라면 아무것도 할당 되지 않은 상태라는 뜻이죠

    일반적으로 a=0; 보다는 a=NULL; 을 많이 쓰는데 두개가 같은 것입니다. 요즘 나오는 툴로는 a=nullptr; 를 사용하기도 합니다.


    이렇게 datas 의 할당과 소멸을 다루고 나면 다음은 holi 배열의 관리인데요..

    holi 라는 배열을 사용하며 CreateData 를 없애고 DeleteData 에서 문자열만 소멸시켜준다던지 하는 방법도 있겠지만...

    일단 여기선 datas 라는 객체를 할당 해줬기 때문에 holi 라는 배열 자체를 바꾸겠습니다

    여기서는 현재 데이터와 다음 데이터를 연결시켜 리스트를 만들고 그 리스트를 관리하는 작업을 할건데요

    일단 리스트의 항목이 될 구조체를 선언합니다

    typedef struct _linkdata {
    datas* data;
    _linkdata* next;
    } linkdata;

    그리고 자료의 관리를 위한 최초 진입점과 끝점을 하나씩 선언해줍니다.

    linkdata* begin = 0;
    linkdata* end = 0;

    이제 데이터의 관리만 하면 됩니다.

    우선 데이터의 생성부분 입니다.

    linkdata* Add(int day, int month) {
    linkdata* link = new linkdata;
    link->data = CreateData(day, month);
    link->next = 0;

    if (begin == 0) {
    begin = end = link;
    } else {
    end->next = link;
    end = link;
    }
    return link;
    }

    순서대로 사용할 데이터를 생성해주고, 현재 아무런 데이터가 없다면 시작과 끝을 생성된 데이터로, 어떠한 데이터가 들어있다면 해당 데이터를 마지막 데이터로 설정해주는 부분이죠

    데이터의 삭제는

    void Remove(dates* data) {
    if (begin == 0) {
    return;
    }

    if (data == begin->data) {
    linkdata* next = begin->next;
    delete begin;
    DeleteData(data);

    begin = next;
    } else {
    linkdata* iter = begin;
    while (iter->next != 0) {
    if (iter->next->data == data) {
    linkdata* next = iter->next->next;
    delete iter->next;
    DeleteData(data);

    iter->next = next;
    break;
    }
    iter = iter->next;
    }
    }
    }


    정도로 하면 되겠네요..

    ..음... 잠자기전에 심심풀이로 살짝 만져본게 여기까지 와버렸네요...........

    코드는 최대한 어려운 코드를 배제했구요..

    그냥 댓글창에서 바로 적은거라 에러가 있을지도 몰라요 적당히 분석 해보며 이해를 하고 사용하는걸 권장합니다

    실제 사용부분 예문으로 하나 적어두고 턴을 마치겠습니다.


    #include <stdio.h>
    #include <string.h>

    typedef struct {
    int month, day;
    char *a;
    }dates;

    typedef struct _linkdata {
    dates* data;
    _linkdata* next;
    } linkdata;

    dates* CreateData(int day, int month);
    void SetString(dates* data, char* a);
    void DeleteData(dates* data);

    linkdata* Add(int day, int month);
    void Remove(dates* data);

    linkdata* begin = 0;
    linkdata* end = 0;

    void main() {
    linkdata* current = Add(1, 5);
    SetString(current->data, "오월 일일");
    current = Add(2, 5);
    SetString(current->data, "오월 이일");
    current = Add(3, 5);
    SetString(current->data, "오월 삼일");

    current = Add(20, 5);
    SetString(current->data, "오월 이십일");
    Remove(current->data);

    current = begin;
    while (current != 0) {
    printf("%s, [%d월 %d일]n", current->data->a, current->data->month, current->data->day);
    current = current->next;
    }

    current = begin;
    while (current != 0) {
    Remove(begin->data);
    current = begin;
    }
    }
    804 이뇨 동영상 [새창] 2014-05-21 22:25:14 0 삭제
    해보고싶다!!
    803 유혹하는 김연아 [새창] 2014-05-21 13:48:34 2 삭제
    설마 빵을 저렇게 유혹하겠어 했는데 정말 빵이였네



    [◀이전10개] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [다음10개▶]

     
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈