누구나 교체 기능이 작동하지 않는 이유를 알 수 있습니까? 메인이 replace (1,2, list)라고 부른다. 노드를 검색해야하며 노드 값이 1이면 값 2 인 새 노드를 만들어 교체하고 첫 번째 노드에 할당 된 메모리를 확보해야합니다. 나는 (당신의 replace()
기능에 문제가 몇 가지 있습니다c - 연결된 목록 기능 바꾸기
typedef struct iNode
{
int myInt;
struct iNode* next;
} IntNode, *IntNodePtr;
IntNodePtr insert(int i, IntNodePtr p)
{
IntNodePtr newp = malloc(sizeof(struct iNode));
newp->myInt = i;
newp->next = p;
return newp;
}
IntNodePtr delete(int i, IntNodePtr p)
{
/* End of list check */
if(p == NULL)
return NULL;
/* Check if current node is the one to delete */
if(p->myInt == i)
{
IntNodePtr temp;
temp = p->next;
free(p);
return temp;
}
p->next = delete(i, p->next);
return p;
}
IntNodePtr replace(int i, int j, IntNodePtr p)
{
if(p == NULL)
return NULL;
if(p->myInt == i)
insert(j, p->next);
free(p);
p->next = replace(i, j, p->next);
return p;
}
목록의 첫 번째 링크를 항상 'replace' 함수에 전달해야합니다. 그렇지 않으면 목록이 깨지게됩니다. 그것은 당신이 지금까지 가지고있는 2 ~ 3 개의 대답을위한 것입니다. 나는 아마 그 가정을 알고 있지만 ... – JimR