双向链表创建,插入,删除(纯C语言)

#include <stdio.h>
#include <stdlib.h>
 
typedef int ElemType;
//////////////////////////////////////////// 
 
//定义结点类型 
typedef struct DulNode
{
    ElemType data;              //单链表中的数据域 
    struct DulNode *next;
    struct DulNode *prior;          //单链表的指针域 
}DulNode,*LinkedList;
LinkedList LinkedListcreat()
{
    LinkedList L;
    L = (DulNode*)malloc(sizeof(DulNode));
    L->next = L;
    L->prior =L;
    DulNode *r;
    r = L;
    ElemType x;                         //x为链表数据域中的数据
    while(scanf("%d",&x) != EOF)
    {
        DulNode *p;
        p = (DulNode*)malloc(sizeof(DulNode));   //申请新的结点 
        p->data = x;                     //结点数据域赋值 
        r->next = p;                 //将结点插入到表头L-->|1|-->|2|-->NULL 
        p->prior = r;
        r = p; 
    }
    r->next = NULL; 
     
    return L; 
}

LinkedList LinkedListinsert(LinkedList L,int i,ElemType x)
{
    DulNode *per;
    per = L;
    int tempi=0;
    for (tempi=1;tempi<i;tempi++){
        per=per->next;
    }
    DulNode *p;
    p=(DulNode*)malloc(sizeof(DulNode));
    p->data=x;
    p->next =per->next;
    per->next->prior=p;
    per->next=p;
    p->prior=per;
    return L;
}

LinkedList LinkedListDelete(LinkedList L)
{
    DulNode *p,*pre;
    p=L->next;
    int i;
    scanf("%d",&i);
    while(p->data!=i)
    {
        pre=p;
        p = p->next;
    }
    pre->next=p->next;
    p->next->prior=pre;
    free(p);
    return L;
}
int main(){
    LinkedList list,start;
    printf("please input number\n");
    list = LinkedListcreat();
    for(start=list->next;start!=NULL;start=start->next)
    printf("%d",start->data);
    int i;
    ElemType x;
    printf("请输入插入数据的位置:");
    scanf("%d",&i);
    printf("请输入插入数据的值:");
    scanf("%d",&x);
    LinkedListinsert(list,i,x);
    for(start = list->next; start != NULL; start = start->next)
        printf("%d ",start->data);
    printf("\n");
    printf("请输入要删除的元素的值:");
     LinkedListDelete(list); 
    for(start = list->next; start != NULL; start = start->next)
        printf("%d ",start->data);
    printf("\n");
}

  

posted @ 2022-03-13 17:23  zhichutian  阅读(151)  评论(0)    收藏  举报