ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c语言双链表实现

2022-04-28 18:02:01  阅读:126  来源: 互联网

标签:return 语言 prior 实现 next int 双链 DuLinkNode data


#include <stdio.h>
#include <stdlib.h>

#define OK 1;
#define ERROR -1;

typedef int Status;

typedef int ElemType;
typedef struct DuLnode{
    ElemType data;
    DuLnode *next,*prior;
}DuLnode,*DuLinkNode;

Status InitDuLnode(DuLinkNode &L){
    L = (DuLinkNode)malloc(sizeof(DuLnode));
    L->next = NULL;
    L->prior = NULL;
    printf("init success \n");
    return OK;
} 

//创建双链表补充数据 
Status CreateDuLinkNode(DuLinkNode &L){
    DuLinkNode p,q;
    p = L;
    for (int i=0;i<10;i++){
        q = (DuLinkNode)malloc(sizeof(DuLnode));
        q -> data = i;
        q -> prior = p;
        q -> next = NULL;
        p -> next = q;
        p = p ->next;
    } 
    return OK;
}

//查找元素返回指针 
DuLinkNode GetElemByIndex(DuLinkNode &L,int i){
    DuLinkNode p;
    p = L;
    for (int j=0;j<i;j++){
        p = p->next;
    }
    printf("data is %d\n",p->data);
    return p; 
}


int GetElem(DuLinkNode L){
    DuLinkNode p;
    p = L;
    while(p->next){
        p = p->next;
        printf("%d\n",p->data);
    }
    return 0;
}

//插入结点 
Status InsertDuLinkNode(DuLinkNode L, int i, ElemType e){
    DuLinkNode p,q;
    p = GetElemByIndex(L,i);
    q = (DuLinkNode)malloc(sizeof(DuLnode));
    if(q){
        q->data = e ;
        q->prior = p->prior;
        p->prior->next = q;
        q->next = p;
        p->prior = q;
        return OK;
    }
    return ERROR;

}

//删除结点 
Status DeleteDuLinkNode(DuLinkNode L, int i){
    DuLinkNode p,q,r;
    p = GetElemByIndex(L,i);
    if(p){
        r = p->next;
        q = p->prior;
        r->prior = q;
        q->next = r;
        free(p);
        return OK;    
    }
    return ERROR;

}



int main(){
    DuLinkNode L;
    InitDuLnode(L);
    CreateDuLinkNode(L);
    InsertDuLinkNode(L,3,33);
    DeleteDuLinkNode(L,1);
    DeleteDuLinkNode(L,5);

    GetElem(L);
    GetElemByIndex(L,1); 
    return 0;
}

 

 

标签:return,语言,prior,实现,next,int,双链,DuLinkNode,data
来源: https://www.cnblogs.com/Pynu/p/16203891.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有