zoukankan      html  css  js  c++  java
  • 循环双链表

    include<stdio.h>

    include<stdlib.h>

    define a 5

    typedef struct node{
    int data;
    struct node rlink,llink;
    }linknode,*linklist;

    void create (linklist &first){ //创建赋值
    int b[a];
    first=(linknode)malloc(sizeof(linknode));
    first->rlink=first;
    first->llink=first;
    linknode s,q,
    r=first;
    printf("请输入数据:");
    for(int i=0;i<a;i++){
    scanf("%d",&b[i]);
    }
    for(int i=0;i<a;i++){
    s= (linknode*)malloc(sizeof(linknode));
    s->data=b[i];
    q=r->rlink;
    s->llink=r;
    q->llink=s;
    r->rlink=s;s->rlink=q;
    r=s;
    }
    }

    void printlist(linklist first){ //输出
    linklist p;
    p=first->rlink;
    printf("请输出数据:");
    while(p!=first){
    printf("%d",p->data);
    p=p->rlink;
    if(p!=first)
    printf(" ");
    }
    printf(" ");
    }

    void search(linklist first){ //查找元素 ,得到元素地址
    int c;
    linklist p;
    printf("请问要查找的元素是:");
    scanf("%d",&c);
    p=first->rlink;
    while(p!=first&&p->data!=c){
    p=p->rlink;
    }
    if(p!=first){
    printf("要查找的元素的地址是:%d ",p);
    }
    else printf("没有找到这个元素!");
    }

    void locate(linklist first){ //找到元素数据
    linklist p;
    int c;
    printf("请问要查找的第几个元素是:");
    scanf("%d",&c);
    if(c<0){
    printf("不符合条件!");
    return;
    }
    p=first->rlink;
    for(int i=1;i<c;i++){
    if(p==first){
    break;
    }else p=p->rlink;
    }
    printf("这个元素是:");
    printf("%d ",p->data);
    }

    linklist located(linklist first,int b){ //找到第几个元素指针
    int k=1;
    linklist p;
    if(b==0)
    return first;
    p=first->rlink;
    while(k<b){
    p=p->rlink;
    k++;
    }
    return p;
    }

    void remove(linklist first){
    int c,b;
    linknode p,pre;
    printf("请问要删除第几个元素:");
    scanf("%d",&c);
    pre=located(first,c-1);
    p=pre->rlink;
    printf("请输出要删除的元素:");
    printf("%d ",p->data);
    if(p==NULL) return;
    p->rlink->llink=pre;
    pre->rlink=p->rlink;
    free(p);
    return;
    }

    void insert(linklist first){
    int i,j;
    linknode p,s;
    printf("请问要在第几个位置插入元素:");
    scanf("%d",&i);
    printf(" ");
    printf("请问要插入的元素是:");
    scanf("%d",&j);
    printf(" ");
    s=(linknode*)malloc(sizeof(linknode));
    if(sNULL){
    printf("存储分配失败! ");
    exit(1); }
    p=located(first,i-1);
    if(p
    first) return;
    s->data=j;
    s->rlink=p->rlink;
    p->rlink=s;
    s->rlink->llink=s;
    s->llink=p;
    }

    int main(){
    linklist L;
    create (L);
    printlist(L);
    search(L);
    locate(L);
    remove(L);
    printlist(L);
    insert(L);
    printlist(L);
    return 0;
    }

  • 相关阅读:
    lanya
    Apple watch ,小米微信通知
    jenkins grunt 自动构建流程
    刷机步骤
    ipad忘记了锁屏密码,已经越狱了
    ar
    如何在ubuntu中安装php
    阿里云
    docker swarm 集群及可视化界面的安装及配置
    https://github.com/gaoyangxiaozhu/DockerVI
  • 原文地址:https://www.cnblogs.com/lusilin/p/10726996.html
Copyright © 2011-2022 走看看