关于用指针数组存储链表节点的问题

2025-02-27 02:48:24
推荐回答(2个)
回答1:

id[1]这个代表结构体;
id[1].next ;这个是结构体指针;
相当于是a[1]=a[1].next;他们两个是不能互相赋值的。
a[1]=*a[1].next;应该是可以的,这不是把next的地址给a,要想赋给a,a[1].next=a[2].next;同类的才可以赋值。

*(id+1)=*(id+1)->next ;
这个是指针,*代表指向的内容。
*(id+1)代表a[1],*(id+1)->next代表a[i+1].next指向的内容,等于是a[i+1]=a[i+1]next指向的结构体。

结构体的头地址是用&来取的,比如struct st{int id;
struct st *next)}a[1];
&a[0]是第一个结构体的首地址,以此类推。

回答2:

typedef struct tagDbNode
{
int num;
struct tagDbNode * next;
} DbNode, * pdbNode,**lpdbNode;

//创建结点
pdbNode CreateNode(int num)
{
pdbNode pnode = (pdbNode)malloc(sizeof(DbNode));
pnode->num = num;
pnode->next = pnode;
return pnode;
}

lpdbNode就是指向指针的指针,lpdbNode=new pdbNode(N);

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!