第1个回答 2011-07-03
p 的上一个节点要等于 p->next
struct node *delet(head,pstr)以/*he a d 为头指针,删除ps t r 所在节点*/
struct node *head;
char *pstr;
{
struct node *temp,*p;
t e m p = h e a d ; / * 链表的头指针* /
if (head==NULL) / *链表为空* /
printf("\nList is null!\n");
else /*非空表* /
{
t e m p = h e a d ;
while (strcmp(temp->str,pstr)!=0&&temp->next!=NULL)
/ * 若节点的字符串与输入字符串不同,并且未到链表尾* /
{
p = t e m p ;
t e m p = t e m p - > n e x t ; / * 跟踪链表的增长,即指针后移* /
}
if(strcmp(temp->str,pstr)==0 ) / *找到字符串* /
{
if(temp==head) { / * 表头节点* /
printf("delete string :%s\n",temp->str);
h e a d = h e a d - > n e x t ;
f r e e ( t e m p ) ; / *释放被删节点* /
}
e l s e
{
p->next=temp->next; /表*中节点*/
printf("delete string :%s\n",temp->str);
f r e e ( t e m p ) ;
}
}
else printf("\nno find string!\n");没/找* 到要删除的字符串*/
}
r e t u r n ( h e a d ) ; / *返回表头指针* /
}
第2个回答 2011-07-05
NODE * x = head; NODE * y = 0;
int i = 0;
for(i = 0; i < 8; i++) x = x->next;
y = x->next;
x->next = y->next;
free(y);
另外,站长团上有产品团购,便宜有保证