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

Nefu 锐格实验9

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

Nefu 锐格实验9

本实验有关链表的基本操作,为下学期数据结构打基础

5825 查找指定结点的前驱,多组输入数据

#include 
#include 
int count=0;
typedef struct node
{
    int data;
    struct node *next;
}LNode;
LNode *search(LNode *H,int x)
{
    LNode *p,*pre;
    p=H->next;pre=H;
    while(p!=NULL&&p->data!=x)
    {
        pre=p;
        p=p->next;
        count++;
    }
    return pre;
}
int main()
{
    int n;
    int x;
    while(scanf("%d",&n)!=EOF)
    {
        LNode *H;
        H=(LNode *)malloc(sizeof(LNode));
        H->next=NULL;
        int i;
        LNode *r;
        r=H;
        for(i=0;idata));
            s->next=r->next;
            r->next=s;
            r=s;
        }
        scanf("%d",&x);
        LNode *p;
        int *w;
        p=search(H,x);
        if(p->next==NULL)
        {
            printf("x不存在");
        }
        else if(count==0)
        {
            printf("没有前驱");
        }
        else
        {
            printf("%d",p->data);
        }
    }
    return 0;
}

5826 查找链表中有多少个值为偶数的结点

#include 
#include 
int count=0;
typedef struct node
{
    int data;
    struct node *next;
}LNode;
void *search(LNode *H)
{
    LNode *p;
    p=H->next;
    while(p!=NULL)
    {
        if((p->data%2)==0)
        {
            count++;
        }
        p=p->next;
    }
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        LNode *H;
        H=(LNode *)malloc(sizeof(LNode));
        H->next=NULL;
        int i;
        for(i=0;idata));
            s->next=H->next;
            H->next=s;
        }
        search(H);
      printf("%dn",count);
      count=0;
    }
    return 0;
}

5827 尾插法建立链表,之后删除其中所有值为x的结点(x有多个)

#include 
#include 
int count=0;
typedef struct node
{
    int data;
    struct node *next;
}LNode;
void search(LNode *H,int x)
{
    LNode *p,*pre;
    p=H->next;pre=H;
    while(p!=NULL)
    {
        if(p->data==x)
        {
            pre->next=p->next;
            free(p);
            p=pre->next;
        }
        else
        {
          pre=p;
          p=p->next;
        }
    }
}
void output(LNode *H)
{
    LNode *p;
    p=H->next;
    while(p->next!=NULL)
    {
        printf("%d  ",p->data);
        p=p->next;
    }
    printf("%d",p->data);
}
int main()
{
    int n;
    int x;
    while(scanf("%d",&n)!=EOF)
    {
        LNode *H;
        H=(LNode *)malloc(sizeof(LNode));
        H->next=NULL;
        int i;
        LNode *r;
        r=H;
        for(i=0;idata));
            s->next=r->next;
            r->next=s;
            r=s;
        }
        scanf("%d",&x);
        search(H,x);
        output(H);
        printf("n");
    }
    return 0;
}

5828 尾插法建立递增有序的链表,插入一个结点后仍然有序

#include 
#include 
int count=0;
typedef struct node
{
    int data;
    struct node *next;
}LNode;
void yxinsert(LNode *H,int x)
{
    LNode *p,*pre;
    p=H->next;pre=H;
    while(p!=NULL&&p->datanext;
    }
    LNode *s;
    s=(LNode *)malloc(sizeof(LNode));
    s->data=x;
    s->next=pre->next;
    pre->next=s;
}
void output(LNode *H)
{
    LNode *p;
    p=H->next;
    while(p->next!=NULL)
    {
        printf("%d  ",p->data);
        p=p->next;
    }
    printf("%d",p->data);
}
int main()
{
    int n;
    int x;
    while(scanf("%d",&n)!=EOF)
    {
        LNode *H;
        H=(LNode *)malloc(sizeof(LNode));
        H->next=NULL;
        int i;
        LNode *r;
        r=H;
        for(i=0;idata));
            s->next=r->next;
            r->next=s;
            r=s;
        }
        scanf("%d",&x);
        yxinsert(H,x);
        output(H);
        printf("n");
    }
    return 0;
}

5829 建立有序链表(利用上一问的有序插入函数,一个一个插入建立有序链表)

#include 
#include 
int count=0;
typedef struct node
{
    int data;
    struct node *next;
}LNode;
void yxinsert(LNode *H,int x)
{
    LNode *p,*pre;
    p=H->next;pre=H;
    while(p!=NULL&&p->datanext;
    }
    LNode *s;
    s=(LNode *)malloc(sizeof(LNode));
    s->data=x;
    s->next=pre->next;
    pre->next=s;
}
void output(LNode *H)
{
    LNode *p;
    p=H->next;
    while(p->next!=NULL)
    {
        printf("%d  ",p->data);
        p=p->next;
    }
    printf("%d",p->data);
}
void create(LNode *H,int n)
{
    int i;
    int in=0;
    for(i=0;inext=NULL;
        create(H,n);
        output(H);
        printf("n");
    }
    return 0;
}

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

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

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