C언어 배열 질문이요~
조회수 1516회
C언어 array_list find 문에서 어떻게 해야지 결과 값이 나오는 건지 알려주세요~ 배열에 값을 추가하고 탐색하면 쓰레기 값이 나오네요
아 그리고 공부하면서 처음로 실행시간을 측정해보는데 어디서부터 어디까지 실행시간을 측정하는 건가요?
#include <stdio.h>
#include <stdlib.h>
#define MAX_LIST_SIZE 100000
typedef int Element;
Element data[MAX_LIST_SIZE];
int length = 0;
int pic = 0;
int pic2 = 0;
int add_num = 0;
int place = 0;
void error(char *str)
{
fprintf(stderr, "%s\n", str);
exit(1);
};
void init_list() {length = 0; }
void clear_list() {length = 0; }
int is_empty() {return length == 0; }
int is_full() {return length == MAX_LIST_SIZE; }
int get_entry(int num) {return data[num]; }
void replace(int num, Element e) {data[num] = e; }
int size() {return length; }
void insert(int pos, int e ){
if(is_full()==0 && pos >= 0 && pos<=length){
for(int i = length ; i>pos ; i--){
data[i] = data[i-1];
}
data[pos] = e;
length++;
}
else error("포화상태 & 오류 || 삽입 위치 오류 입니다.");
}
void delete(int pos)
{
if(is_empty()==0 && 0 <= pos && pos < length){
for(int i=pos+1 ; i < length ; i++ ){
data[i-1] = data[i];
length--;
}
}
else error("공백상태 오류 || 삭제 위치 오류");
}
int find (Element e)
{
for(int i = 0 ; i < length ; i++){
if(data[i] == e ){
printf("%d",data[i]);
}
else error("입력 오류 ");
}
}
void print_list(){
for(int i = 0 ; i < length ; i++){
printf("%2d, ", data[i]);
}
printf("\n");
}
void prompt_2(){
printf(" 노드를 추가 or 삭제 할 위치를 선택하세요\n");
printf(" 1. 맨 앞 2. 맨 뒤 3. 위치 선택\n");
printf(" 메뉴를 선택하세요 : ");
printf("\n");
}
void main(){
/*
do{
prompt_1();
scanf("%d",&pic);
if(pic == 1){
for
}
/*if(pic == 2){
prompt_2();
delete();
}
if(pic == 3){
find();
}
if(pic == 4){
printf("현재 배열 상태 : ");
print_list();
}
}while(pic != 5);
*/
while (1) {
printf("실행할 동작을 선택\n");
printf(" 1. 노드추가 2. 노드 삭제 3. 노드 검색 4.노드 출력 5. 종료 \n 메뉴를 선택하세요 : ");
scanf("%d", &pic);
if (pic >= 1 && pic != 5) {
switch (pic) {
case 1 :
printf("삽입할 수 설정 : ");
scanf("%d", &add_num);
printf("삽입할 위치를 선택하시오\n");
printf("1. 맨 앞, 2. 맨뒤, 3.사용자 위치 설정 : ");
scanf("%d", &pic2);
if(pic2 == 1){
insert(0,add_num);
}
else if(pic2 == 2){
insert(length,add_num);
}
else if(pic2 == 3){
printf("삽입할 위치를 설정 (0~ ) : ");
scanf("%d", &place);
insert(place,add_num);
}
printf("삽입되었습니다.\n\n");
break;
case 2 :
printf("제거할 위치를 설정 (0~ ) : ");
scanf("%d", &place);
delete(place);
printf("제거되었습니다.\n\n");
break;
case 3 :
printf("검색 위치를 설정 : ");
scanf("%d",&place);
find(place);
break;
case 4 :
printf("\n");
print_list();
break;
default :
printf("유효하지 않은 값입니다. 다시 입력해주십시오.\n\n");
break;
}
}
else if(pic == 5)
break;
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
void delete(int pos) { if(is_empty()==0 && 0 <= pos && pos < length){ for(int i=pos+1 ; i < length ; i++ ){ data[i-1] = data[i]; } length--; } else error("공백상태 오류 || 삭제 위치 오류"); } void find (Element e) { for(int i = 0 ; i < length ; i++){ if(data[i] == e ){ printf("index : %d\n", i); } } }
시간측정은 함수별로 해보세요~ 어차피 메인은 무한루프니까 의미없을테구요
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력