求助关于数据结构循环链表**p的问题
#include<stdio.h>#include<stdlib.h>
typedef int Elemtype;
typedef struct node
{
Elemtype data;
struct node *next;
}node;
void ds_init(node*pNode)
{
node *target,*temp;
Elemtype item;
printf("请输入结点的值,输入0结束结束初始化\n");
while(1)
{
scanf("%d",&item);
fflush(stdin);
if(item==0)
return;
if(pNode==NULL)
{
pNode=(node*)malloc(sizeof(node));
if(!(pNode))
exit(0);
pNode->data=item;
pNode->next=pNode;
}
else
{
for(target=pNode;target->next!=pNode;target=target->next);
temp=(node*)malloc(sizeof(node));
temp->data=item;
temp->next=target->next;
target->next=temp;
}
}
}
void ds_traverse(node*pNode)
{
node*target;
target=pNode;
printf("**********链表中的元素**********\n");
do
{
printf("%4d",target->data);
}while((target=target->next)!=pNode);
printf("\n");
}
int main()
{
void ds_init(node*pNode);
void ds_traverse(node*pNode);
node*pNode=NULL;
ds_init(pNode);
printf("\n");
ds_traverse(pNode);
}
我调试好半天都不成功但是我改成了老师的**p就可以了,请问为什么呀 哪里有问题
如果要改变参数的值,传递的参数必须是变量的地址,这一点是不变的
虽然pNode是指针,但它同时也是一个变量,所以必须传递这个指针的地址,也就是传递指向指针的指针(**)以此类推,如果变量是指针的指针(**),那就必须传递指向指针的指针的指针(***)
页:
[1]