有头结点单链表中查找值等于指定值的结点

【问题描述】

实现有头结点单链表查找算法:根据关键字值查找单链表中第一个等于e的结点,找到该结点则将该结点值增10,并依次输出单链表中各元素值;如果没有找到则输出“no”。

【输入形式】

第一行输入整数n(n不大于1000),表示单链表长度;

第二行输入n个整数建立单链表;

第三行输入一个整数,表示待查找的元素值。

【输出形式】

若找到指定结点,输出修改指定结点后的单链表中各元素值;若未找到,输出“no”。

【样例输入1】

5

10 56 -34 -2 90

90

【样例输出1】

10 56 -34 -2 100

【样例输入2】

5

10 56 -34 -2 90

88

【样例输出2】

no

问题难度:⭐

初始化并创建一个带头结点的单链表

  单链表基本操作之初始化一个单链表

#include
#include
typedef  int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
LinkList initList()
{
    LinkList head;
    head=(LinkList)malloc(sizeof(LNode));
    if(head!=NULL)
    {
        head->next=NULL;
    }
    return head;
}

单链表的插入

  单链表基本操作之单链表的插入

int insertList(LinkList head, int pos, ElemType e)
{
    	LinkList P=head;
        int j=0;
        while(P&&jnext;
        	j++;
    	}    
    	if(!P||j>pos-1||pos<1){
    		return 0;
    	}
    	LinkList Pnew=(LinkList)malloc(sizeof(LNode));
    	Pnew->data=e;
    	Pnew->next=NULL;
    	P->next=Pnew;
    	P=Pnew;
    	return 1;
}

单链表的查找

  单链表基本操作之单链表的查找,并返回查找元素的指针

LinkList ListSeach(LinkList head, ElemType e)
{
        LinkList P=head->next;
    	while(P){
    		if(P->data==e)
    		return P;
    		P=P->next;
    	}  
        return NULL;
}

完整代码

#include
#include
typedef  int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

LinkList initList();
int insertList(LinkList head, int pos, ElemType e);
LinkList ListSeach(LinkList head, ElemType e);
LinkList initList()
{
    LinkList head;
    head=(LinkList)malloc(sizeof(LNode));
    if(head!=NULL)
    {
        head->next=NULL;
    }
    return head;
}

int insertList(LinkList head, int pos, ElemType e)
{
    	LinkList P=head;
        int j=0;
        while(P&&jnext;
        	j++;
    	}    
    	if(!P||j>pos-1||pos<1){
    		return 0;
    	}
    	LinkList Pnew=(LinkList)malloc(sizeof(LNode));
    	Pnew->data=e;
    	Pnew->next=NULL;
    	P->next=Pnew;
    	P=Pnew;
    	return 1;
}


LinkList ListSeach(LinkList head, ElemType e)
{
        LinkList P=head->next;
    	while(P){
    		if(P->data==e)
    		return P;
    		P=P->next;
    	}  
        return NULL;
}

int main()
{
    LinkList head,f;
    ElemType e;
    int i,n;
    scanf("%d",&n);
    head=initList();
    for(i=0;idata+=10;
        LinkList p=head->next;
        while(p)
        {
            printf("%d ",p->data);
            p=p->next;
        }
        printf("\n");
    }
    else
    {
        printf("no\n");
    }
    return 0;
}

运行结果

有头结点单链表中查找值等于指定值的结点_第1张图片

有头结点单链表中查找值等于指定值的结点_第2张图片   

你可能感兴趣的:(笔记)