이게 내 첫 번째 게시물이고 내 이론적 인 데이터 구조 클래스에 대한 숙제를위한 것입니다. 내가 묻는 질문은 과제가 별개가 아니라 가능하다면 코드를 깨끗하게 만들 것이다. (이 문제의 경우 할당은 연결리스트 스택을 사용하여 역 폴란드 표기법 계산기를 확인하는 것입니다.)포인터를 반환 한 후 즉시 해제하는 방법?
는 내가하고 싶은 것은이
char* postEval(char* equation)
{
char* curChar = equation;
struct stackNode* stack = NULL;
/*Alot of processing (hint: stack gets initialized during this)*/
/****Is there a way to free the node after returning it?? --
this is pseudo-code!*****/
return FreeThenReturn(stack->data);
}
이다 나는 내가 할 수있는 알고 sprintf()
또는 strcpy()
을로 임시 변수 그래서 노드를 무료로 되돌릴 수있는 varaible 온도를 반환하지만, 거기에 더 좋은 방법은 무엇입니까 ??
EDIT : 명확하지 않은 내용이지만 '데이터'멤버 (char *)의 복사본을 호출 함수로 반환하려고합니다. 이것은 스택의 메모리를 해제하고 거기에 저장된 데이터의 복사본을 보내야하기 때문에 문제가됩니다. 이런 식으로하는 것이 이상하게 보일 수도 있지만 선생님이 그렇게하도록 특별히 말씀하신 방법입니다. struct stackNode 정의 나 postEval()의 프로토 타입을 전혀 편집 할 수 없습니다.
는struct stackNode
{
char* data;
struct stackNode *next;
}
또한, 함수 postEval()는 기본적으로는 변수 '수학'의 각각의 문자를 분석하고 식은 다음과 같이 응답을 반환 해결 스위치 문 단지 루프 다음과 같이 구조체 stackNode 정의는 숯*. 선생님은 스택을 사용하여 문제를 해결할 수 있는지보고 싶어합니다. 바로 그 점입니다. 이런 식으로하지 않는 것이 더 쉽다는 것을 알고 있지만, 과제를하지는 않았습니다.
그것은 당신이 요구하는지 완전히 불분명! 의미 론적으로 (왜 그렇게하고 싶습니까?), 불충분 한 코드 예제 ([MCVE] (http://stackoverflow.com/help/mcve))를 제공하십시오. –
'sprintf'와'strcpy'에 관해서는 포인터가 무엇인지 이해하지 못한다는 것을 암시합니다. 이걸 제대로 생각해 봤어? – Nobilis
노드를 반환 한 후 해제 하시겠습니까? 정확히 언제? 확실히 반환하는 코드가 먼저 필요합니다. –