简单的链表~~删除接点问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 02:52:50
#include "stdio.h"
#include "conio.h"
#include "math.h"
struct node
{int data;
struct node *next;};
typedef struct node AA;
AA *gz() /*链表函数*/
{AA *h,*r,*b; int a;
r=(AA *)malloc(sizeof(AA));
h=r;
printf("qing shu ru\n");
scanf("%d",&a);
while(a)
{ b=(AA *)malloc(sizeof(AA));
b->data=a;
r->next=b;
r=b;
scanf("%d",&a);}
r->next='\0';
return h;}

sh()
{AA *p,*t,*head=gz(); /*输出和删除接点函数*/

t=head->next;
while(t)

我想应该在这里写表达式~~可是我不会晕

{printf("%d->",t->data);
t=t->next;}}
main()

{ sh(); getch(); }

先定义一个节点指针*temp,*drop,drop指向你要删除的节点,temp指向drop的前一个几点;
temp->next=drop->next;
free(drop);

既然是链表,那么你可以直接使要被删除的结点的前一个结点的指针指向要被删除的结点的后一个结点,在释放掉指向当前要被删除的结点的指针即可。

见P301
(只有这样说啦~呵呵
我也刚学~~~