回顾数据结构(3):双向链表

来源:互联网 发布:mac ppt使用教程 编辑:程序博客网 时间:2024/05/16 14:01
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct LNode{    int data;    struct LNode *next;    struct LNode *prior;}Node,*LinkList;//创建双向链表int createLinkList(LinkList &L,int length){    LinkList temp,head;    L = (LinkList)malloc(sizeof(Node));    if(!L){        printf("malloc action error");        return 0;    }    L->next = NULL;    L->prior = NULL;    head = L;    int j =0;    for(;j<length;j++){        temp = (LinkList)malloc(sizeof(Node));        if(!temp){             printf("malloc action error");             return 0;        }        scanf("%d",&temp->data);        temp->next = head->next;        head->next = temp;        temp->prior = head;        head = temp;    }    return 1;}//遍历双向链表int printfLinkList(LinkList L){    LinkList head;    head = L;    head = head->next;    while(head!=NULL){        printf("%d ",head->data);        head = head->next;    }    return 1;}//双向链表的插入int insertLinkList(LinkList L,int i ,int element){    LinkList head,temp;    head = L;    int j =0;    while(head&&j<i-1){        head = head->next;        ++j;    }    if(!head||j>i-1){        printf("insert Error");        return 0;    }    temp = (LinkList)malloc(sizeof(Node));    if(!temp){         printf("malloc action error");         return 0;    }    temp->data = element;    temp->next =  head->next;    temp->prior = head;    head->next = temp;    return 1;}//双向链表的删除int deleteLinkList(LinkList L,int i){    LinkList head,temp;    head = L;    int j=0;    while(head->next&&j<i-1){        head = head->next;        ++j;    }    if(!head->next&&j>i-1){        printf("delete error");        return 0;    }    temp = head->next;    head->next = temp->next;    temp->next->prior = head;    printf("%d\n",temp->data);    return 1;}int main(){    LinkList L;    int length;    printf("create\n");    scanf("%d",&length);    createLinkList(L,length);    printfLinkList(L);    //    printf("\ninsert\n");    int index;    int element;    scanf("%d %d",&index,&element);    insertLinkList(L,index, element);    printfLinkList(L);    //      printf("\ndelete\n");      scanf("%d",&index);      deleteLinkList(L,index);      printfLinkList(L);}
0 0