如下,通过将指针所在的地址传入函数中即**p的形式,来保证直接对地址进行运算,而不需要再返回一个链表
//双链表 #include <stdio.h> #include <stdbool.h> #include <malloc.h> typedef struct DNode { int data; struct DNode *prior,*next;//prior指向上一个结点,next指向下一个结点 }DNode,*DLinkList; bool InitList(DLinkList *L)//初始化双链表 { *L=(DNode *)malloc(sizeof(DNode));//新建一个头结点 if(*L==NULL)//内存不足分配失败 { return false; } else { (*L)->next=NULL;//将头结点的下一个节点设为NULL return true; } } void createDLinkList(DLinkList *L)//尾插法建立双链表 { *L=(DLinkList)malloc(sizeof(DNode)); (*L)->next=NULL; DNode *s; DNode *e=*L;//e为表尾的结点,此时L就是最后的结点 int value; scanf("%d",&value); while(value!=9999) { s=(DNode *)malloc(sizeof(DNode)); s->data=value; e->next=s; s->prior=e;//s的上一个结点指向e e=s;//将e指向s,即最后一个结点 scanf("%d",&value); } } int main() { DLinkList L; InitList(&L); createDLinkList(&L); printf("%d",L->next->next->next->data); return 0; }
标签:03,结点,21,value,next,链表,DLinkList,NULL,DNode From: https://www.cnblogs.com/ryuichi-ssk/p/17275924.html