指向指针的指针在链表的应用?
这个程序在main 函数处有问题,主要是我搞不清指向指针的指针在链表中的用法,尤其在main函数中如何引用#include "stdio.h"
#include<malloc.h>
typedef struct node {int data;
struct node *link;
}NODE; //构造自定义结点。
NODE *create_link_list(int n) //创建为n长度新链表
{int i;
NODE *head,*p,*q;
if (n==0)return(NULL);
head=(NODE*)malloc(sizeof(NODE));
p=head;
printf("\nenter linklist data:\n");
for(i=1;i<n;i++)
{scanf("%d",&(q->data));
q=(NODE*)malloc(sizeof(NODE));
p->link=q;
p=q;
}
scanf("%d",&(q->data));
p->link=NULL;
getchar();
return(head);
}
int link_del(NODE **head,int i,int a) //删除链表结点
{int j;
NODE *p,*q,*b;
q=*head;
if(q==NULL)return(1);
if(i==0&&a==0) //删除头结点
{q=*head;
*head=q->link;
//*head=b->link;
free(q);
//free(b);
return(0);
}
j=0;p=*head; //删除非头结点
while(++j<i&&p!=NULL)
p=p->link;
if(i<0||j<i)return(1);
else
{q=p->link;
//b=p->link;
p->link=q->link;
//p->link=b->link;
free(q);
//free(b);
return(0);
}
}
void main()
{ int i,n,a;
NODE **start,*temp;
//n=6;
start=create_link_list(n);
printf("\nenter delete NODE Num:\n");
scanf("%d,%d",&i,&a);
n=link_del(*start,i,a);
temp=start;
printf("\nresult:\n");
while(temp->link!=NULL)
{printf("%d ",temp->data);
temp=temp->link;
}
printf("%d \n",temp->data);
getch();
}