• 循环双链表


    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;
    }

  • 相关阅读:
    工作中会用到的知识点(二)
    canvas 绘制图形
    CSS 清除浮动的方法
    倒计时
    JavaScript 对象
    推荐一款分页插件
    HTML5 Video标签
    idea lua插件设置Lua SDK
    Springboot访问 图片image css js资源文件
    nginx基本配置与参数说明
  • 原文地址:https://www.cnblogs.com/lusilin/p/10726996.html
Copyright © 2020-2023  润新知