수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

링크드리스트 제발,,,,,도와주세요

뿌잉

2023.04.01

링크드리스트(chaining) 방식으로 데이타를 저장할려고하는데 함수를 만들어봣는데 도저히 안돼요 ㅠㅠ제가 간략히 짜본 코드는 여기있는데요;설명을 드리자면,,,node*c_table 은 구조체배열을 인자로 받아서 저장할꺼구요int*table 은 저장할값을 가지고있는 배열이구요int num은 배열의 위치입니다...이코드 어떻게 문제인지좀 설명좀 해주세요 미치겟음 ㅠㅠ추가로 전체소스코드도 미테 붙여놀게요 혹시나 이해안돼시면 보시라궁,,,void chaining(node* c_table, int* table, int num)
{
node *temp=(node*) malloc(sizeof(node));
head=&c_table[num];while(head-link!=NULL)
head=head-link;

head-link=temp;
temp-key=table[num];
temp-link=NULL;
head=NULL;

collision+=1;
}전체소스#include stdio.h
#include stdlib.h
#include time.hint collision=0;struct node{
int key;
struct node* link;
};
typedef struct node node;node chain_table[211];
node* head;
node* cmd;
void struct_reset(node* arr, int* table, int len);// 구조체 배열 초기화 함수
void table_reset(int* arr, int len);// 변수 테이블 초기화 함수
long rand_num();// 0~999999중의 랜덤값을 리턴하는 함수
int shift_fold(int* arr, int index, int t_len);// 쉬프트폴딩을 하는 함수
int bound_fold(int* arr, int index,int t_len);// 바운더리폴딩을 하는 함수
int Quad_Prob(int* arr, int* Q_arr, int index);// 데이터 충돌시 Quadratic_Probing방식을 구현하는 함수
void chaining(node* c_table, int* table, int num);// 데이터 충돌시 링크드리스트 방식을 구현하는 함수int main()
{
int sel1,sel2,sel3; // sel1=테이블 사이즈 선택 sel2=폴딩 방식 선택 sel3=데이터 충돌시 해결방법
int i,j;
int tablesize;int table[211];
int fold_table[211];
int Q_table[211];

printf(테이블 사이즈를 선택하세요 1.101 2.211 : );
scanf(%d, &sel1);printf(폴딩 방법을 선택하세요 1.Shift Folding 2.Boundary Folding : );
scanf(%d, &sel2);printf(데이타 충돌시 해결 방법을 선택하세요 1.Quadratic_Probing 2.chaining : );
scanf(%d, &sel3);if(sel1==1)
tablesize=101;
else
tablesize=211;table_reset(table, tablesize);srand(time(NULL));if(sel1==1)
{
for(i=0;itablesize;i++)
table[i]=rand_num();struct_reset(chain_table, table, tablesize);
if(sel2==1)
{
for(i=0;itablesize;i++)
fold_table[i]=shift_fold(table, i, tablesize);

for(i=0;itablesize;i++)
{
for(j=0;jtablesize;j++)
{
if(i==j)
continue;
if(fold_table[i]==fold_table[j])
{
if(sel3==1)
{
Quad_Prob(table, Q_table, j);
}
else
chaining(chain_table, table, i);
}
}
}

}
else
{
for(i=0;itablesize;i++)
fold_table[i]=bound_fold(table, i, tablesize);

for(i=0;itablesize;i++)
{
for(j=0;jtablesize;j++)
{
if(i==j)
continue;
if(fold_table[i]==fold_table[j])
{
if(sel3==1)
{
Quad_Prob(table, Q_table, j);
}
else
chaining(chain_table, table, i);
}
}
}
}
}
else
{
for(i=0;itablesize;i++)
table[i]=rand_num();struct_reset(chain_table, table, tablesize);
if(sel2==1)
{
for(i=0;itablesize;i++)
fold_table[i]=shift_fold(table, i, tablesize);
p;
for(i=0;itablesize;i++)
{
for(j=0;jtablesize;j++)
{
if(i==j)
continue;
if(fold_table[i]==fold_table[j])
{
if(sel3==1)
{
Quad_Prob(table, Q_table, j);
}
else
chaining(chain_table, table, i);
}
}
}
}
else
{
for(i=0;itablesize;i++)
fold_table[i]=bound_fold(table, i, tablesize);

for(i=0;itablesize;i++)
{
for(j=0;jtablesize;j++)
{
if(i==j)
continue;
if(fold_table[i]==fold_table[j])
{
if(sel3==1)
{
Quad_Prob(table, Q_table, j);
}
else
chaining(chain_table, table, i);
}
}
}
}
}

if(sel3=1)
{
printf(순서 랜덤값 폴딩값 저장위치 \n);
for(i=0;itablesize;i++)
{
printf(%3d %12d %10d %17d \n,i+1, table[i], fold_table[i], Q_table[i]);}
}
else
{
printf(순서 랜덤값 폴딩값 저장위치 \n);
for(i=0;itablesize;i++)
{
printf(%3d %12d %10d %17d ,i+1, table[i], fold_table[i], chain_table[i].key);
while(chain_table[i].link != NULL)
{
cmd=chain_table[i].link;
printf( %d, cmd-key);
chain_table[i].link=cmd-link;
}
printf(\n);
}
}
return 0;
}void struct_reset(node* arr, int* table, int len)//구조체 초기화 함수
{
int i;
for(i=0;ilen;i++)
{
arr[i].key=table[i];
arr[i].link= NULL;
}
}void table_reset(int* arr, int len) // 테이블 초기화 함수
{
int i;
for(i=0;ilen;i++)
{
arr[i]= -1;
}
}long rand_num() // 0~999999중의 랜덤값을 리턴하는 함수
{
long val;
val=(((long) rand()15) | rand()) %1000000;
return val;
}int shift_fold(int* arr, int index, int t_len)
{
int val,val1;

val=arr[index]/1000;
val1=arr[index]-val*1000;
return (val+val1)%t_len;
}int bound_fold(int* arr, int index,int t_len)
{
int val,val1,result;
int x,y,z;

val=arr[index]/1000;
val1=arr[index]-val*1000;
x=val/100;
y=val%10;
z=(val%100)-(val%100)%10;
result=x+y*100+z*10;
return (val+result)%t_len;
}int Quad_Prob(int* arr, int* Q_arr, int index)
{
int n;// 새로운 키값을 할당받는 변수
collision+=1;
n=((arr[index])+collision*collision);
if(n100)//인덱스를 0~100으로 주기
n%=101;

return n;}void chaining(node* c_table, int* table, int num)
{
node *temp=(node*) malloc(sizeof(node));
head=&c_table[num];while(head-link!=NULL)
head=head-link;

head-link=temp;
temp-key=table[num];
temp-link=NULL;
head=NULL;

collision+=1;
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2700484 두 개가 차이가 뭔지 알려주세요...(소수 찾는 프로그램) (2) 날위해 2025-07-05
2700426 인터넷 창 띄우는 질문이요 (1) 정훈 2025-07-04
2700400 원넓이를 계산이요 ㅜㅜ 천칭자리 2025-07-04
2700368 if에 관해서 질문이요... Orange 2025-07-04
2700339 이거 결과값이 왜이런건지.. (4) 그댸와나 2025-07-04
2700313 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) 크나 2025-07-03
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com