malloc,realloc,calloc一直很头疼,这次笔试题需要在数组后重新分配新的空间的代码是:
//删除函数,删除ptr中的ptr[in]元素,n是数组原来的长度。void rmv(int *ptr,int in,const unsigned int n){ unsigned int i; for (i=in; iin; i--) { *(ptr+i)=*(ptr+i-1); } ptr[in]=x;}//需要包含stdlib.h头文件。
malloc分配空间之后需要free掉,以后得记住了。
附带删除一个单向链表的最中间元素,不能使用两次循环。
void delMiddle(link *head){ if(head == NULL) return; else if(head->next == NULL) { delete head; return; } else { link *low = head; link *fast = head->next; while(fast != NULL && fast->next != NULL) { fast = fast->next->next; if(fast == NULL) break; low = low->next; } link *temp = low->next; low->next = low->next->next; delete temp; }}