所以我想排序如下所示的指針數組。我遇到的問題是數組包含一個空元素。我必須解除引用除NULL以外的所有元素。其他方面,當然我得到一個錯誤,但這會導致我的排序在NULL出現後沒有正確排序任何元素。我可以爲NULL情況創建一個特定的異常,但無論如何要避免這種情況,並在0處理NULL,而我仍然取消引用其他所有內容?現在我告訴排序忽略NULL。這只是一個佔位符,因爲我一直無法找到解決我的問題的方法。泡泡排序指針陣列
#include <stdio.h>
#include <stdlib.h>
void arr(int ar[], int ele);
int main(){
int a=0, b=9, x=3, p=2, *ar[]={&a, &b, &x, NULL, &p}, i=0, ele=(sizeof(ar)/sizeof(ar[0]));
arr(ar, ele);
printf("\n\n");
for(;i<ele;i++){
if(ar[i]==NULL){
printf("");
}else{
printf("%i", *ar[i]);
}
}
}
void arr(int *ar[], int ele){
int i=ele-1, c=0;
for(;i>0; i--){
for(;c<i; c++){
if((ar[c]!=NULL && ar[c+1]!=NULL) && *ar[c]>*ar[c+1]){
int t=*ar[c+1];
*ar[c+1]=*ar[c];
*ar[c]=t;
}
}
}
}
只是刪除空,排序,然後把它放回你想要的任何位置。比試圖用簡單的算法處理null更簡單。 – goat