【发布时间】:2015-06-04 06:49:13
【问题描述】:
我有一个函数 bubble_sort_linkedList 声明为,
void bubble_sort_linkedList(node *head);
函数的定义(按升序排序)是这样的:
void bubble_sort_linkedList(node *head){
node *ptr, *lptr;
int temp;
lptr = NULL; ptr = head;
if(ptr == NULL || ptr->next == NULL)
return;
while(ptr != lptr){
while(ptr->next != lptr){
if(ptr->next->value < ptr->value){ // Change the inequality sign
temp = ptr->next->value;
ptr->next->value = ptr->value;
ptr->value = temp;
}
ptr = ptr->next;
}
lptr = ptr;
ptr = head;
}
return;
}
现在,我希望同样的函数也按降序排序,只需在注释行中更改一次登录。
所以,我打算做出的改变是:
void bubble_sort_linkedList(node *head, bool is_ascending); //Prototype declaration
is_ascending 是从主函数传递的决定。
同样的功能,但是三元运算符用作占位符(这是我比较困惑的部分,三元运算符可以像下面这样使用吗?)
void bubble_sort_linkedList(node *head, bool is_ascending){
node *ptr, *lptr;
int temp;
lptr = NULL; ptr = head;
if(ptr == NULL || ptr->next == NULL)
return;
while(ptr != lptr){
while(ptr->next != lptr){
if(ptr->next->value ((is_ascending) ? <:>) ptr->value){
temp = ptr->next->value;
ptr->next->value = ptr->value;
ptr->value = temp;
}
ptr = ptr->next;
}
lptr = ptr;
ptr = head;
}
return;
}
【问题讨论】:
-
不,你不能那样做。但是在
if测试之前添加一两行代码来评估你想要的比较真的不会很糟糕。 -
不过,它适用于函数名称。
标签: c sorting placeholder ternary-operator bubble-sort