1创建带头结点单链表A,依次从键盘输入5名学生的姓名、成绩并插入到单链表A中,输出并显示(数据结构)急等
数据结构期中考试_上机
11通信
1、创建带头结点单链表A,依次从键盘输入5名学生的姓名、成绩并插入到单链表A中,输出并显示;
2、利用原结点空间,对单链表A按学生成绩递增有序的顺序进行就地排序,输出显示排序后的单链表A。
第二问添加以下2个方法:
/*交换两个学生节点的数据*/
void Exchange(Node *a, Node *b)
{
char tempName[Name_MAX] = a->name;
int tempScore = a->score;
a->name = b->name;
a->score = b->score;
b->name = tempName;
b->score = tempScore;
}
/*排序方法*/
void Sort(Node *head)
{
Node *p = head;
Node *index, *min;
while(1)
{
if(p->next == NULL)
break;
else
{
index = p->next;
while(1)
{
if(index->score score)
min = index;
if(index->next == NULL)
break;
else
index = index->next;
}
if(p->score != min->score)
Exchange(p, min);
p = p->next;
}
}
}
!!!另外刚才的回答中我发现一个缺陷,请将下面的方法替换原方法
/*从指定节点开始打印链表内容*/
void printFrom(Node *from)
{
int i = 0;
Node *p = from;
while(1)
{
printf("Node%d: Name:%s Score:%d\n", ++i, p->name, p->score);
if(p->next != NULL)
p=p->next;
else
break;
}
}
/*main中如果需要排序就使用
sort(head);
*/
========================
哥们不好意思,记事本写程序不容易,这几分钟内我改了好几个地方,上面这个是最新版了,请确认你是不是用了之前的版本