(1)学生信息的初始化(建表)
(2)按条件查找某个学生
(3)在要求的某个值的学生前插入一个新学生
这个是要求 我写的这个代码提示类型不符合 请问该怎么修改
还有我这个代码如果运行了能达到要求吗
#include
#include
define OK 1
define ERROR 1
struct stu
{
char name;
int id;
};
typedef struct Node
{
struct stu data;
struct Node *next;
}Node,*LinkList;
Node * Locate(LinkList L,int key)
{ Node p;int k=0;
p=L->next; // 从表中第一个结点比较 */
while(p!=NULL)
{
k++;
if(p->data.id!=key)
{
p=p->next;
}
else break;
}
if(p->next==NULL)
{
return (Node *)ERROR;
}
else return k;
//* 找到结点key,退出循环 * /
}
//在单链表L中第i个结点之前插入值为e的新结点
int InsList(LinkList L,int i,struct stu e)
{
Node p,*s;
int k=0;
if(i
return ERROR;
p=L;
while(p!=NULL && k
{
p=p->next; k=k+1;
}
if(p==NULL)
{ printf("插入位置不合理!");
return ERROR;
}
s=(Node)malloc(sizeof(Node)); //为e申请一个新的结点
s->data=e; //将待插入结点的值e赋给s的数据域
s->next=p->next; p->next=s;
return OK;
}
int InitList(LinkList *L)
{
*L=(LinkList)malloc(sizeof(Node));
(*L)->next=NULL;
}
int CreateFromTail(LinkList L)
{
Node *r,*s;
struct stu c;
int flag=1;
r=L;
while(flag)
{
scanf("%s%d",&c.name,c.id);//注意改写
if(c.id=0)
{
s=(Node *)malloc(sizeof(Node));
s=(Node *)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=NULL;
}
}}
int PrintList(LinkList L)
{
LinkList p;
p=L;
while (p->next!=NULL)
{
p=p->next;
printf("%s %d\n",p->data.name,p->data.id);
}
}
int main()
{
LinkList L;
InitList(&L);
CreateFromTail(L);
PrintList(L);
int key;
scanf("%d",&key);
char pos=Locate(L,key);
struct stu e;
scanf("%s",e.name);
InsList(L,pos,e);
return 0;
}