我编辑了我的问题。我写了我的功能。但是输出中存在一些错误。我该如何修复它?
void enqueue(char type,int p){
if (que == NULL){
que =malloc(sizeof(struct node));
que->nextPtr = NULL;
que->pages=p;
que->userType=type;
return;
}
q = prev = que;
while((q->nextPtr != NULL) && charcmp(q->userType,type)<0){
prev = q;
q = q->nextPtr;
}
if(charcmp(q->userType,type)==0){
while(q->nextPtr !=NULL && q->pages < p){
prev = q;
q = q->nextPtr;
}
}
n = malloc(sizeof(struct node));
n->pages=p;
n->userType=type;
if ( (charcmp(q->userType,type) < 0 || charcmp(q->userType,type)==0 ) && q->pages < p){
n->nextPtr = q->nextPtr;
q->nextPtr = n;
}
if((q->pages >= p )){
n->nextPtr = q;
if (prev->nextPtr == q){
prev->nextPtr = n;
}
else if (que == q)
{
que = n;
}
}
}
这是我的charcmp函数。
int charcmp(char a,char b){
while(a==b){
return 0;
}
while(a!=b){
if(a=='C' && (b=='G'|| b=='A')){
return -1;
}
if(a=='G' && (b=='A')){
return -1;
}
if(a=='A' && (b=='C' || b=='G')){
return 1;
}
if(a=='G' && b=='C'){
return 1;
}
}
}
我的输出有一些错误。我无法修复它。例如它的返回C,C,A,C,G
答案 0 :(得分:0)
#include <stdio.h>
int main(){
char inputChar[] = {'A', 'C', 'G'};
char bufferChar[3] = {'\0', '\0', '\0'};
for(int i = 0; i < 3; i++)
{
if(inputChar[i] == 'C')
bufferChar[0] = inputChar[i];
else if(inputChar[i] == 'G')
bufferChar[1] = inputChar[i];
else
bufferChar[2] = inputChar[i];
}
for(int i = 0; i < 3; i++)
{
printf("%c ", bufferChar[i]);
}
printf("\n");
return 0;
}
我希望这就是你要找的东西。尝试摆弄 inputChar 你仍然会得到C G A
答案 1 :(得分:0)
因此,您希望对自定义对象数组进行排序,如下所示:
typedef struct {
char c; // a character
int i; // a number
} pair;
然后您可以使用自定义比较函数应用标准函数qsort()
,如下所示:
int compare(const void *a, const void *b) {
pair *p1 = (pair*) a;
pair *p2 = (pair*) b;
if (p1->c == p2->c) return p1->i - p2->i;
if (p1->c == 'C' || p1->c == 'G' && p2->c == 'A') return -1;
return 1;
}
这样,包含测试数据的测试代码将打印C,1 C,8 G,2 G,5 A,4 A,7 A,10
int main() {
pair input[] = {{'A', 10}, {'A', 7}, {'G', 5},
{'C', 8}, {'A', 4}, {'C', 1}, {'G', 2}};
qsort(input, 7, sizeof(pair), compare);
pair *cur = input;
for (int i=0; i<7; ++i, ++cur) {
printf("%c,%d ", cur->c, cur->i);
}
printf("\n");
}
如何将任意输入转换为结构数组,这是一个练习。