반응형

c 32

두 AVL 트리 연결/병합/접합

두 AVL 트리 연결/병합/접합 두 개의 AVL 트리가 있고 첫 번째 트리의 각 요소가 두 번째 트리의 각 요소보다 작다고 가정합니다.단일 AVL 트리로 연결하는 가장 효율적인 방법은 무엇입니까?여기저기 찾아봤지만 유용한 것을 찾지 못했습니다.입력 트리를 파괴할 수 있다고 가정하면 다음과 같습니다. 왼쪽 트리에 대해 가장 오른쪽에 있는 요소를 제거하고 이를 사용하여 왼쪽 하위가 왼쪽 트리이고 오른쪽 하위가 오른쪽 트리인 새 루트 노드를 구성합니다. O(log n) 노드의 균형 계수를 결정하고 설정합니다. O(log n).(일시적으로) 불변성을 위반하는 경우 균형 계수가 {-1, 0, 1} 범위를 벗어날 수 있습니다. 회전하여 균형 계수를 범위로 되돌립니다. O(log n) 회전: O(log n) 따라서 ..

sourcetip 2023.11.04

C 표준 방식으로 비트 표현을 하는 방법은?

C 표준 방식으로 비트 표현을 하는 방법은? C 표준에 따라 정수형의 값 표현은 정의되어 있습니다. 그래서5로 표현되지 않을 수도 있습니다.00000000000000000000000000000101아니면-1~하듯이11111111111111111111111111111111우리가 보통 32비트 2의 보어로 가정하듯이.그래서 운영자들이~,잘 정의되어 있으며, 이들이 작업할 비트 패턴은 구현이 정의되어 있습니다.정의된 비트 패턴은 " §5.2.1/3 모든 비트가 0으로 설정된 null 문자라고 불리는 바이트가 기본 실행 문자 집합에 존재해야 합니다. 문자열을 종료하는 데 사용됩니다."뿐이었습니다. 그래서 제 질문은 - 정수형을 비트 패턴으로 변환하는 구현 독립적인 방법이 있나요? 항상 null 문자로 시작해서 ..

sourcetip 2023.10.30

문자[]의 일부분을 C로 인쇄하는 가장 간단한 방법

문자[]의 일부분을 C로 인쇄하는 가장 간단한 방법 예를 들면 제가.char* str = "0123456789"처음 세 글자와 마지막 세 글자를 자르고 중간만 인쇄하려고 하는데, 가장 간단하고 안전한 방법은 무엇입니까? 자, 비결은.자를 부분과 인쇄할 부분은 크기가 다양해서 아주 긴 char*, 아니면 아주 작은 char*를 가질 수 있었습니다.사용가능printf(), 그리고 특별한 형식 문자열: char *str = "0123456789"; printf("%.6s\n", str + 1); 정확도가.%s변환 지정자는 인쇄할 최대 문자 수를 지정합니다.변수를 사용하여 런타임의 정밀도를 지정할 수도 있습니다. int length = 6; char *str = "0123456789"; printf("%.*s\..

sourcetip 2023.10.30

C 내장 소프트웨어에서 룩업 테이블 대 스위치

C 내장 소프트웨어에서 룩업 테이블 대 스위치 또 다른 이야기를 들어보면, 저는 그 말을 들었습니다.switch속도와 컴팩트성 면에서 룩업 테이블보다 더 나을 수 있습니다. 그래서 저는 이것의 차이점을 이해하고 싶습니다. 조회표 static void func1(){} static void func2(){} typedef enum { FUNC1, FUNC2, FUNC_COUNT } state_e; typedef void (*func_t)(void); const func_t lookUpTable[FUNC_COUNT] = { [FUNC1] = &func1, [FUNC2] = &func2 }; void fsm(state_e state) { if (state < FUNC_COUNT) lookUpTable[stat..

sourcetip 2023.10.30

프로그래밍 언어에 키워드가 필요한 이유는 무엇입니까?

프로그래밍 언어에 키워드가 필요한 이유는 무엇입니까? 예를 들어 (C): int break = 1; int for = 2; 왜 컴파일러는 그것을 추론하는데 전혀 문제가 없을까요?break그리고.for변수가 여기에 있습니까? 그래서 키워드가 필요한데요. 우리는 그 프로그램들이 읽을 수 있기를 원합니다. 이미 복잡한 오늘날의 컴파일러 작업을 지나치게 complic하고 싶지 않습니다. 하지만 가장 중요한 것은, 만약 어떤 '핵심' 단어들이 어떤 특별한 행동을 위해 남겨져 있다면, 언어는 훨씬 더 강력하다는 것입니다.그러면, 이 언어는 명확한 방식으로 for loop을 구현하려고 시도하다가 죽는 것보다 더 높은 수준에서 유용하다고 생각할 수 있습니다. 그럴 필요는 없어요 -- 포트란은 어떤 단어도 예약하지 않았..

sourcetip 2023.10.30

치명적 오류: iostream:GCC를 사용하여 C 프로그램을 컴파일할 때 이러한 파일이나 디렉터리가 없습니다.

치명적 오류: iostream:GCC를 사용하여 C 프로그램을 컴파일할 때 이러한 파일이나 디렉터리가 없습니다. 다음 다중 스레드 병합 정렬 C 프로그램을 컴파일하려는 경우 다음 오류가 발생하는 이유는 무엇입니까? ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread mer.c:4:20: fatal error: iostream: No such file or directory #include ^ compilation terminated. ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread mer.c:4:22: fatal error: iostream.h: No such file or directo..

sourcetip 2023.10.25

해스켈 FFI가 C로 들어갔다가 다시 돌아오는데 얼마입니까?

해스켈 FFI가 C로 들어갔다가 다시 돌아오는데 얼마입니까? 앞의 결과에 따라 각각 1개 이상의 C 기능을 호출하려면 3개의 호출을 처리하는 포장지 C 기능을 만드는 것이 좋습니까?종류를 변환하지 않고 하스켈 FFI를 사용하는 것과 같은 비용이 들까요? 내가 다음과 같은 하스켈 코드를 가지고 있다고 가정합니다. foo :: CInt -> IO CInt foo x = do a IO CInt foreign import ccall safe "funcs.h cfABC" c_cfABC :: CInt -> IO CInt wrap :: (CInt -> IO CInt) -> Int -> IO Int wrap foo arg = fmap fromIntegral $ foo (fromIntegral arg) cfabc = w..

sourcetip 2023.10.25

배열과 포인터를 포함하는 이 코드가 왜 그렇게 작동합니까?

배열과 포인터를 포함하는 이 코드가 왜 그렇게 작동합니까? 다음 코드의 출력이 어떻게 되는지 질문 받았습니다. int a[5] = { 1, 3, 5, 7, 9 }; int *p = (int *)(&a + 1); printf("%d, %d", *(a + 1), *(p - 1)); 3, 9 오류 3, 1 2, 1 정답은 NO.1 입니다. 구하기 쉽습니다.*(a+1)3 입니다. 근데 어때요?int *p = (int *)(&a + 1);그리고.*(p - 1)?이에 대한 답은 C 표준을 읽는 방식에 따라 "1) 3,9" 또는 "2) 오류"(또는 더 구체적으로 정의되지 않은 동작)가 될 수 있습니다. 우선, 이것을 예로 들어보겠습니다. &a + 1 &연산자가 배열의 주소를 가져옵니다.a우리에게 활자의 표현을 주는...

sourcetip 2023.10.20

자신의 보필은 현실적인 문제인가요, 아니면 역사적인 문제인가요?

자신의 보필은 현실적인 문제인가요, 아니면 역사적인 문제인가요? C에서 홀수/짝수를 결정하는 것에 대한 또 다른 질문이 있었고, 관용적인 (x & 1) 접근 방식은 C 표준이 허용하는 보완 기반 시스템에 대해 고장 난 것으로 올바르게 플래그가 지정되었습니다. 컴퓨터 박물관 밖의 '현실 세계'에 시스템이 정말로 존재합니까?저는 1970년대부터 코딩을 해왔는데 그런 짐승을 만난 적이 없다고 확신합니다. 실제로 그런 시스템을 위한 코드를 개발하거나 테스트하는 사람이 있습니까?아니면 그런 걱정을 할까요? 아니면 종이 테이프와 펀치 카드와 함께 101호실에 넣을까요?저는 원격 측정 분야에서 일하고 있으며, 일부 고객들은 여전히 1의 보어를 사용하는 오래된 아날로그-디지털 변환기를 가지고 있습니다.얼마 전 보상을 ..

sourcetip 2023.10.20

부분 문자열 색인 가져오기

부분 문자열 색인 가져오기 나는 char * 소스를 가지고 있고, 나는 그것의 서브스크립팅에서 추출하고 싶습니다. 내가 알고 있는 것은 기호 "abc"에서 시작하여 소스가 끝나는 곳에서.strr을 사용하면 포인어를 얻을 수 있지만 위치는 얻을 수 없으며 위치가 없으면 서브스트링의 길이를 알 수 없습니다.순수 C에서 부분 문자열의 인덱스를 얻으려면 어떻게 해야 합니까?포인터 뺄셈을 사용합니다. char *str = "sdfadabcGGGGGGGGG"; char *result = strstr(str, "abc"); int position = result - str; int substringLength = strlen(str) - position; newptr - source당신에게 상쇄효과를 줄 겁니다.ch..

sourcetip 2023.10.15
반응형