无情的bug制造者 2019-10-24 23:24 采纳率: 0%
浏览 160
已采纳

c语言链表问题,请问一下我这个代码错在哪里,谢谢了

(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;
}

  • 写回答

1条回答

  • dabocaiqq 2019-10-25 10:30
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档