动态 链 表 的 建 立
1. 修改以下程序,尽可能减少临时空间的占用。即:先判断输入数据的合法性,再为其分配空间。
2. 修改以下程序,把尾插法建立链表改为头插法建立链表。
3. 循环链表实现的约瑟夫问题。约瑟夫问题请参考另一文档。
/********************** 动态建立链表 *******************/
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int num;
float score;
student* next;
}student;
void main()
{
struct student *p,*head,*q;
p=(student*) malloc (sizeof(student));
q=p;
head=NULL;
scanf("%d,%f", &p->num,&p->score);
while(p->num!=0)
{
if(head==NULL) head=p;
else q->next=p;
q=p;
p=(student*) malloc (sizeof (student) );
scanf("%d,%f", &p->num,&p->score);
}
q->next=NULL;
/*************输出***************/
printf("%10s%10s\n","学号","分数");
p=head;
while(p)
{
printf("%10d%10.2f\n",p->num,p->score);
p=p->next;
}
}
ps:莫将代码贴在上面!