该楼层疑似违规已被系统折叠隐藏此楼查看此楼
scanf("%f",&p1->score);
}
p2->next = NULL; /*此句就是根据单向链表的最后一个节点要指向NULL*/
free(p1); /*释放p1。用malloc()、calloc()的变量都要free()*/
p1 = NULL;
}
Delete() //删除节点函数
{ long num;
struct student *p1; /*p1保存当前需要检查的节点的地址*/
struct student *p2; /*p2保存当前检查过的节点的地址*/
printf("please input the num you want to delete");
scanf("%d",&num);
if (head == NULL)
{
printf("\nList is null!\n");
}
/*定位要删除的节点*/
p1 = head;
while (p1->num != num && p1->next != NULL) /*p1指向的节点不是所要查找的,并且它不是最后一个节点,就继续往下找*/
{
p2 = p1; /*保存当前节点的地址*/
p1 = p1->next; /*后移一个节点*/
}
if (num == p1->num)
{
if (p1 == head) /*如果要删除的节点是第一个节点*/
{
head = p1->next; /*头指针指向第一个节点的后一个节点,也就是第二个节点。这样第一个节点就不在链表中,即删除。*/
}
else /*如果是其它节点,则让原来指向当前节点的指针,指向它的下一个节点,完成删除*/
{
p2->next = p1->next;
}
free(p1); /*释放当前节点*/
p1 = NULL;
printf("\ndelete %ld success!\n",num);
n -= 1; /*节点总数减1个*/
}
else /*没有找到*/
{
printf("\n%ld not been found!\n",num);
}
}
void insert() //插入节点函数
{}
void print() //打印所有节点的函数
{
struct student *p;
printf("\nNow , These %d records are:\n",n);
p = head;
if(head != NULL) /*只要不是空链表,就输出链表中所有节点*/
{
printf("head is %o\n", head); /*输出头指针指向的地址*/
do
{
printf("%o %ld %5.1f %o\n", p, p->num, p->score, p->next);
p = p->next; /*移到下一个节点*/
}
while (p != NULL);
}
}
void search()
{}
void menu()
{ printf(" **********学籍管理系统************\n");
printf("\n ******请选择******\n");
printf(" *************|1 |建| 立| 学| 生| 信| 息| 结| 构|*************\n");
printf(" *************|2 |删| 除| 学| 生| 信| 息| **************\n");
printf(" *************|3 |加| 入| 新| 的| 学| 生| 信| 息|*************\n");
printf(" *************|4 |显| 示| 所| 有| 学| 生| 信| 息|*************\n ");
printf("*************|5 |查| 找| 学| 生| 信| 息| **************\n");
printf(" *************|0 |退| 出| 程| 序| *************\n");
}
void main()
{ int choose;
int i=1;
while(i=1)
{
menu();
printf("请输入0-5选择功能");
scanf("%d",&choose);
switch(choose)
{
case'1': Create(); break;
case'2': Delete(); break;
case'3': insert(); break;
case'4': print(); break;
case'5': search(); break;
case'0': i=0; printf("程序结束!!"); break;
default: printf("\n Wrong Selection !(选择错误,重选)\n"); break;
}
}
}