我无法弄清楚如何在当前代码中执行更新功能。他不希望我们更改学生证,但希望我们更改GPA以及与当前学生相关的专业。他想要我们 创建一个提示,供用户输入要搜索的学生ID号。还要创建提示以确定用户希望更新哪个字段,然后接受该字段的新输入并更改相应学生的内容。我不想要答案。我只需指向正确的方向。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "stuff.h"
#include "staticll.h"
int compareID(void*, void*);
int compareGPA(void*, void*);
int compareMajor(void*, void*);
void main(void)
{
FILE *fp;
struct Node List[15];
int Begin, current, newStuff, oldStuff;
double oldData;
int(*fnPtr)();
fnPtr = compareMajor;
Begin = 0;
struct Student *stu;
for (int x = 0; x < 3; x++)
{
newStuff = FindSpace(List);
List[newStuff].nodeData = readData(stdin);
addNode(Begin, List, newStuff);
}
for (int i = Begin; i != -1; i = List[i].nodeLink)
fprintf(stdout,"%.2f\n",((Stu*)List[i].nodeData));
for (int i = Begin; i != -1; i = List[i].nodeLink)
free(List[i].nodeData);
}
int compareID(void *p1, void *p2)
{
if (((Stu*)p1)->stuID == ((Stu*)p2)->stuID)
return 0;
else
if ((((Stu*)p1)->stuID < ((Stu*)p2)->stuID))
return 1;
else
return -1;
}
int compareGPA(void *p1, void *p2)
{
if (((Stu*)p1)->stuGPA == ((Stu*)p2)->stuGPA)
return 0;
else
if ((((Stu*)p1)->stuGPA < ((Stu*)p2)->stuGPA))
return 1;
else
return -1;
}
int compareMajor(void *p1, void *p2)
{
return strcmp(((Stu*)p1)->stuMajor, ((Stu*)p2)->stuMajor);
}
这是我为所需更新功能创建的当前代码。
#include"Stuff.h"
void updateNode(struct Node List[], int current, int *NewData)
{
int temp1;
List[current].nodeLink = List[*NewData].nodeData;
List[*NewData].nodeLink = NewData;
printf("enter the student ID number ");
}