单链表元素查找c语言,数据结构单链表用c语言如何实现

41e6a9c61732349c1cdd8cc50bbfb050.png

慕运维8079593

# include# includetypedef int datatype;typedef struct node{datatype data;struct node *next;}LinkList;LinkList *head,*p,*s;int i,j,x,count,length,choices;LinkList (*CreatList)()//创建单链表{int t;LinkList *r;head=(LinkList*)malloc(sizeof(LinkList));r=head;scanf("%d",&t);while(t!=-1){s=(LinkList*)malloc(sizeof(LinkList));s->data=t;r->next=s;r=s;scanf("%d",&t);}r->next=NULL;return head;}LinkList DispList(LinkList *head)//输出单链表{for(p=head->next;p;p=p->next)printf("%5d",p->data);printf("\n");}int ListLength(LinkList *head)//计算单链表长度并输出{length=0;p=head->next;while(p!=NULL){p=p->next;length++;}printf("%5d\n",length);}LinkList GetElem(LinkList *head,int i)//查找某一元素并输出{j=0;LinkList *p;p=head;scanf("%d",&i);while((p->next!=NULL)&&(jnext;j++;}if(i==j) printf("%5d\n",p->data);else printf("NULL\n");}LinkList LocateElem(LinkList *head,int x)//查找某一元素的位置并输出{p=head->next;count=1;scanf("%d",&x);while(p!=NULL){if(p->data!=x){p=p->next; count++;}else break;}if(count<=length) printf("%5d\n",count);else printf("error\n");}LinkList ListInsert(LinkList *head,int i,datatype x)//在某一位置插入某一元素{j=1;p=head->next;s=(LinkList*)malloc(sizeof(LinkList));scanf("%d%d",&i,&x);while(jnext;j++;}s->data=x;s->next=p->next;p->next=s;DispList(head);ListLength(head);}LinkList ListDelete(LinkList *head,int i)//删除某一位置的元素{j=1;p=head->next;scanf("%d",&i);while(jnext;j++;}s=p->next;p->next=s->next;free(s);DispList(head);ListLength(head);}int DestroyList(LinkList*head)//释放单链表{p=head->next;while(p->next!=NULL){s=p;p=p->next;free(s);}head=NULL;return 0;}int main(void){printf("0:创建单链表\n1:输出单链表\n2:计算单链表长度并输出\n3:查找某一元素并输出\n");printf("4:查找某一元素的位置并输出\n5:在某一位置插入某一元素\n6:删除某一位置的元素\n7:释放单链表\n");printf("说明:创建单链表以-1结束。\n该程序的释放有点问题,但可以当清空单链表来用。\n请选择:");while(scanf("%d",&choices)){switch(choices){case 0:CreatList();break;//创建单链表case 1:DispList(head);break;//输出单链表case 2:ListLength(head);break;//计算单链表长度并输出case 3:GetElem(head,i);break;//查找某一元素并输出case 4:LocateElem(head,x);break;//查找某一元素的位置并输出case 5:ListInsert(head,i,x);break;//在某一位置插入某一元素case 6:ListDelete(head,i);break;//删除某一位置的元素case 7:DestroyList(head);printf("该程序释放后不能选择输出");break;//释放单链表}printf("请选择:");}return 0;} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值