2023-03-31-将指针所在地址传入函数来创建链表的一种写法
如下,通过将指针所在的地址传入函数中即**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;
}