【发布时间】:2018-10-01 16:33:06
【问题描述】:
typedef struct node {
struct node *prev;
int index;
int val;
struct node *next;
} nod;
nod *p, *q, *r, *prim;
void print()
{ p=prim;
while(p!=NULL)
{
printf("%d ",p->val);
p=p->next;
}
}
void swap(nod *p, nod *max) {
int tmp=p->val;
p->val=max->val;
max->val=tmp;
}
void sort() {
q=prim->next;
nod *max;
while(p!=NULL) {
max=prim;
while(q->index<p->index) {
if(q->val>max->val) {
max=q;
}
q=q->next;
}
swap(p,max);
p=p->prev;
}
}
//some other functions that work fine
int main()
{
int n=10, index=0;
//prim=(nod *) malloc(sizeof(nod)); done in add
prim=NULL;
do {
add(rand()%100, &index); //added succesufully
} while(index<10);
printf("Before sorting:\n");
print();
sortare();
printf("\nAfter sorting:\n");
print();
}
我在这个列表上应用了类似选择排序的东西,但我认为它有问题,因为它是not really sorted。 没有错误。问题出在算法上。
【问题讨论】:
-
请不要添加填充文本。而是用实际的细节填写它!比如您的输入、预期和实际输出,以及您为尝试和调试程序所做的工作。
-
你在哪里调用
sort()?在main()中,您调用sortare()。那叫sort()吗? -
我想我会尝试从数组中的列表中提取值,用简单的算法对其进行排序,然后将它们重新排序
-
在我的代码中称为 sortare,但问题不在此