해시테이블 만드는것에 대해 질문올립니다

chosun86의 이미지

100개의 난수를생성해서
해시테이블을 만드는건데요

난수범위는 0부터100만까지 크게 해놓고
테이블 사이즈는 101과 211일때경우를 차례대로 찍어내야하는데요

난수생성을 한후로
어떻해 테이블을 만드는지 감이안옵니다
조건이 해싱은 세게의 디지트 단위로 FOrding을 적용한후 나눗셈을 해야하구요
충돌 발생시 Quadratic_Probing 과 연결리스트를 이용하라는데
너무 힘이드네요

도와주세요 ㅜㅜ

Fe.head의 이미지

Quote:

난수범위는 0부터100만까지 크게 해놓고
테이블 사이즈는 101과 211일때경우를 차례대로 찍어내야하는데요

전 질문이 이해 안되네요.

난수는 해쉬맵 만드는데 들어가는 조건이 아닐테구..

테이블 사이즈 101 ???
테이블 사이즈는 보통 정해 주지 않나요?

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

chosun86의 이미지

100개의 난수를 만든 후 해시테이블을 만들어라.

조건 1: 난수는 0과 100만사이의 수를 만들것
조건 2: 테이블 사이즈는 101과 211을 사용하여 두가지 경우에 대하여
테이블에 있는 내용들을 차례로 찍어낼것.
조건 3: 충돌(Collision)이 발생할 경우
1. Quadratic_Probing과
2. 연결리스트를 이용하여 해결할 것.
조건 4. 해싱 함수는 세 개의 디지트 단위로 Folding을 적용한 후 나눗셈을
적용할 것

이게 제가해야할껍니다 근데
어떻해야할지 막막하네요

소타의 이미지

bucket 이야 101개나 211개의 배열로 만들면 되고
bucket 마다 linked list로 데이터를 넣고..

bucket을 찾아가는 룰에 조건4를 적용하면 되고 linked list를 탐색하는 부분에 조건3에 대한걸 적용하면 됩니다.

막막하면 다른 해시테이블 구현을 보시거나 네이버에서 검색해보면 블로그들에 소스코드까지 다 있습니다.
과제이신가봐요?

chosun86의 이미지

검색을 아무리해도 관련 소스코드 구하기가 쉽지않군요
과제가 맞긴 합니다
근데손을 못쓰겠어요
버킷사이즈 101로 잡아놨고
100크기의 배열을 잡아서
난수를 다저장했습니다
그다음에 뭐 어찌해야할지 손을 못대겠군요

Fe.head의 이미지

C++로 한다면..

대략

typedef list<int>  DataList;
typedef DataList::iterator DataListIter;
 
DataList  hashTable[101];
 
 
// 값 입력.
int value = rand();
 
int key = hashFunc( value );
 
DataList[key].push_back( value );
 
// 값 출력.
for( int i = 0 ; i < 101 ; ++i ) {
 cout << "hashTable[" << i << "] : ";
 for( DataListIter iter = hashTable[i].begin() ; iter != hashTable[i].end() ; ++iter ) {
  cout << *iter << " ";
 }
 cout << endl;
}

일것 같습니다.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

chosun86의 이미지

전체적인 코드를 보고싶습니다 이것만 보기엔 해석하기가 너무 힘드네요 ㅜㅜ

Fe.head의 이미지

으음. 전체적인 코드면 다 코딩하는것인데..

그것까지는 좀^^

위의것을 대략적이예요.. 참고만 하세요^^

C언어로할려면..

리스트를 구현 해야겠죠.

hashFunc 함수는 저장한 값을 hash된 값을 반환하는것입니다.

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

chosun86의 이미지

c언어로 구현중인데
연결리스트를 어떻해 할줄 몰라서 막막합니다
오늘까지 만들어야하는데

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.