(_依然饭特稀 发表于 2014-11-8 10:09:03

求助关于数据结构循环链表**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就可以了,请问为什么呀 哪里有问题

风之残月 发表于 2014-11-10 21:54:09

如果要改变参数的值,传递的参数必须是变量的地址,这一点是不变的
虽然pNode是指针,但它同时也是一个变量,所以必须传递这个指针的地址,也就是传递指向指针的指针(**)以此类推,如果变量是指针的指针(**),那就必须传递指向指针的指针的指针(***)
页: [1]
查看完整版本: 求助关于数据结构循环链表**p的问题