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

  • 相关阅读:
    汤姆大叔JavaCript系列10阅读笔记1
    界面设计
    html5 canvas store 和 restore 详解
    js 的上下文
    PHP实现大数以,做分隔符分隔
    Javascript可以兼容各浏览器的阻止默认行为发生的方法
    Javascript实现页面内元素添加滚动条
    $.getjson遇到的几个问题json返回数据中带有html标签的输出
    MYSQL的随机查询的实现方法
    jQuery插件:jqplot图表绘制插件详解
  • 原文地址:https://www.cnblogs.com/lusilin/p/10726996.html
Copyright © 2011-2022 走看看