C语言运行中出现“ld returned 1 exit status”无法解决
#include<malloc.h>
#include<stdio.h>
typedef int ADT;
typedef struct N
{
ADT data;
struct N * next;
}Node;
typedef struct
{
Nodehead,tail;
unsigned size;
} List;
Nodemake_node(ADT d)
{
Nodenp=malloc(sizeof(Node));
if(!np)
return (void*)0;
np->data=d;
np->next=(void*)0;
return np;
}
Listinit_list(Listlp)
{
lp->head=lp->tail=(void*)0;
lp->size=0;
return lp;
}
Listclear_list(Listlp)
{
while(lp->head)
{
Nodedel=lp->head;
lp->head=del->next;
free(del);
}
lp->tail=(void)0;
lp->size=0;
return lp;
}
void destroy_list(Listlp)
{
clear_list(lp);
}
Listpush_front_list(Listlp,ADT d)
{
Nodenew_node=make_node(d);
if(!new_node)
return(void*)0;
new_node->next=lp->head;
lp->head=new_node;
if(lp->tail==(void*)0)
lp->tail=lp->head;
++lp->size;
return lp;
}
Listpush_back_list(Listlp,ADT d)
{
Nodenew_node=make_node(d);
if(!new_node)
return(void)0;
if(lp->tail)
lp->tail->next=new_node;
else
lp->head=new_node;
lp->tail=new_node;
++lp->size;
}
Listpop_front_list(Listlp)
{
if(lp->size==0)
return(void*)0;
Nodedel=lp->head;
lp->head=del->next;
free(del);
--lp->size;
if(lp->size==0)
lp->tail=(void)0;
return lp;
}
Listpop_back_list_bad(Listlp)
{
if(lp->size==0)
return (void*)0;
Nodedel=lp->head;
Nodenew_tail=lp->tail;
if(lp->head==lp->head)
lp->tail=lp->head=(void*)0;
else
{
while(new_tail->next!=lp->tail)
new_tail=new_tail->next;
new_tail->next=(void*)0;
lp->tail=new_tail;
}
free(del);
--lp->size;
return lp;
}
Nodefind_in_list(const Listlp,ADT d)
{
Node* cur=lp->head;
while(cur&&cur->data!=d)
cur=cur->next;
return cur;
}
Listinsert_after_list(Listlp,ADT d,Nodepos)
{
if(pos==(void)0||lp->size==0)
return push_front_list(lp,d);
if(pos==lp->tail)
return push_back_list(lp,d);
Nodenew_node=make_node(d);
if(!new_node)
return(void)0;
new_node->next=pos->next;
pos->next=new_node;
++lp->size;
return lp;
}
Listinsert_list1(Listlp,ADT d,Nodepos)
{
if(pos==(void)0||lp->size==0)
return push_back_list(lp,d);
if(pos==lp->head)
return push_back_list(lp,d);
Nodenew_node=make_node(d);
if(!new_node)
return(void)0;
Nodepre=lp->head;
while(pre&&pre->next!=pos)
pre=pre->next;
if(pre)
{
new_node->next=pos;
pre->next=new_node;
}
return lp;
}
Listinsert_list2(Listlp,ADT d,Nodepos)
{
if(pos==(void*)0||lp->size==0)
return push_back_list(lp,d);
if(pos==lp->head)
return push_front_list(lp,d);
Nodenew_node=make_node(pos->data);//注意
if(!new_node)
return(void) 0;
pos->data=d;
new_node->next=pos->next;
pos->next=new_node;
if(pos==lp->tail)
lp->tail=new_node;
return lp;
}
Listerase_after_list(Listlp,Nodepos)
{
if(pos==lp->tail||lp->size==0)
return (void)0;
if(pos==(void*)0)
return pop_front_list(lp);
Nodedel=pos->next;
pos->next=del->next;
--lp->size;
if(del==lp->tail)
lp->tail=pos;
free(del);
return lp;
}
Listerase_list1(Listlp,Nodepos)
{
if(pos==(void*)0||lp->size==0)
return(void*)0;
if(pos==lp->head)
return pop_front_list(lp);
Nodepre=lp->head;
while(pre&&pre->next!=pos)
pre=pre->next;
if(pre)
{
pre->next=pos->next;
if(pos==lp->tail)
lp->tail=pre;
--lp->size;
free(pos);
}
return lp;
}
Listerase_list2(Listlp,Nodepos)
{
if(pos==(void*)0||lp->size==0)
return (void*)0;
if(pos==lp->head)
return pop_front_list(lp);
if(pos==lp->tail)
return pop_back_list_bad(lp);
Nodedel=pos->next;
pos->data=del->data;
pos->next=del->next;
--lp->size;
if(del==lp->tail)
lp->tail=pos;
free(del);
return lp;
}
int remove_if_list(Listlp,_Bool(con)(ADT))
{
int count=0;
while (lp->size&&con(lp->head->data))
{
++count;
pop_front_list(lp);
}
if(lp->size>1)
{
Nodepre=lp->head;
while(pre->next)
{
if(con(pre->next->data))
{
Nodedel=pre->next;
pre->next=del->next;
free(del);
--lp->size;
++count;
if(pre->next==0)
lp->tail=pre;
}
else
pre=pre->next;
}
}
return count;
}
void print_list(const Listlp)
{
Node*cur=lp->head;
if(cur)
{
printf("链表存放%d个数据:%d",lp->size,cur->data);
cur=cur->next;
while(cur)
{
printf("->%d",cur->data);
cur=cur->next;
}
printf("\n");
}
else
printf("空链表\n");
}
_Bool lessl0(int n)
{
return n<10;
}
int main(void)
{
int i;
List list;
init_list(&list);
push_front_list(&list,1);
push_front_list(&list,2);
print_list(&list);
push_back_list(&list,3);
push_back_list(&list,4);
print_list(&list);
pop_front_list(&list);
pop_back_list_bad(&list);
print_list(&list);
insert_after_list(&list,5,find_in_list(&list,3));
insert_list1_list(&list,4,find_in_list(&list,5));
insert_list2_list(&list,2,find_in_list(&list,3));
print_list(&list);
erase_after_list(&list,find_in_list(&list,4));
erase_list1(&list,find_in_list(&list,3));
erase_list2(&list,find_in_list(&list,4));
print_list(&list);
remove_if_list(&list,lessl0);
print_list(&list);
destroy_list(&list);
return 0;
}
C语言运行中出现“ld returned 1 exit status”无法解决
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
悬赏问题
- ¥15 基于单片机的靶位控制系统
- ¥15 AT89C51控制8位八段数码管显示时钟。
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 下图接收小电路,谁知道原理
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错