码迷,mamicode.com
首页 > 其他好文 > 详细

单向链表的查找与删除

时间:2018-09-24 18:57:56      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:返回   单向链表   lse   link   size   clu   return   null   lib   

#include<stdio.h>
#include<stdlib.h>
#define N 7

typedef struct node{
int data;
struct node *next;
}ElemSN;

ElemSN *Creatlink(int a[]);
void Printlink(ElemSN *h);
ElemSN *Findnode(ElemSN *h,int key);
ElemSN *Delnode(ElemSN *h,int key);


int main(void)
{
int a[7]={3,2,5,8,4,7,6};
ElemSN *head,*pkey,*h1;
int key;
scanf("%d",&key);
head=Creatlink(a);
Printlink(head);
printf("\n");
//查找
pkey=Findnode(head,key);
if(!pkey)
printf("NOTFIND");
else
printf("%5d\n",pkey->data);
printf("\n");
//删除
h1=Delnode(head,key);
Printlink(h1);
printf("\n");
}

ElemSN *Creatlink(int a[])
{
ElemSN *p,*h;
int i;
h=p=(ElemSN *)malloc(sizeof(ElemSN));
h->data =a[0];
h->next=NULL;
for(i=1;i<N;i++)
{
p=p->next=(ElemSN *)malloc(sizeof(ElemSN));
p->data=a[i];
p->next=NULL;
}
return h;
}

void Printlink(ElemSN *h)
{
ElemSN *p;
for(p=h;p;p=p->next)
{
printf("%5d",p->data);
}
}

ElemSN *Findnode(ElemSN *h,int key)
{
ElemSN *p;
for(p=h;p&&p->data!=key;p=p->next);
//返回结果在主函数中
return p;
}

ElemSN *Delnode(ElemSN *h,int key)
{
ElemSN *p,*q;
for(p=h;p&&p->data!=key;q=p,p=p->next);
if(!p)
printf("NOTFIND");
else
{
if(p-h)
q->next=p->next ;
else //删头
h=h->next ;
}
return h;
}

单向链表的查找与删除

标签:返回   单向链表   lse   link   size   clu   return   null   lib   

原文地址:https://www.cnblogs.com/laziya/p/9696191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!