无情的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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名