栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言数据结构

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言数据结构

设计一个算法,在一个单链表中值为y的结点前面插入一个值为x的结点,即使值为x的新结点成为值为y的结点的前驱结点。

代码:

#include
#include
typedef struct links{
    int elem;
    struct links *next;
}link;
link* chuangzaolinks(){
    link *p=(link*)malloc(sizeof(link));
    link *temp=p;
    int x;
    for(int i=1;i<5;i++){
        link*a=(link*)malloc(sizeof(link));
        printf("please input your element:");
        scanf("%d",&x);
        a->elem=x;
        a->next=NULL;
        temp->next=a; 
        temp=temp->next;    
    }
        return p; 
 }
void displaylink(link *p){
    link *temp=p;
    while(temp->next){
        temp=temp->next;
        printf("%dn",temp->elem);
        
    }
    
 }
int showlink(link*p){
    link *temp=p;
    int d=0;
    while(temp->next){
        temp=temp->next;
        d++;
    }
    return d;
}

link* charulink(link*p,int y,int x){//可以分为两个模块,一则为查找一则为前插
    link *temp;//temp为值为y的结点的地址
    link*pre=p;//pre为temp的前置结点
    temp=p->next; //对temp进行遍历查找
    while(temp!=NULL&&temp->elem!=y){
        pre=temp;
        temp=temp->next;//对temp进行遍历查找,同时进行pre的前置插入

      pre->next=temp;
    }
    
    if(temp==NULL){
        printf("插入位置不存在"); 
    }
    else{
        link* s=(link*)malloc(sizeof(link));//创建新插入的结点
        s->elem=x;
        s->next=pre->next;//后置插入
        pre->next=s;
    } 
    return p;
}
    

    
int main(){
    link *p;
    int x;
    int y;
    p=chuangzaolinks();
    printf("结点个数为%dn",showlink(p));
    printf("请输入x的值与y的值:"); 
    scanf("%d%d",&x,&y);
    charulink(p,y,x);
    displaylink(p);
    return 0;
}
本题主要考查的是按值查找与前查结点。

如果对链表的插入不熟悉的话,本题较难做。

本文只具有一定参考作用,不具有指导作用,如有错误,还请各位大佬斧正。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783810.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号