用单链表实现字符串的逆置,哪里错了
#include"stdio.H"#include"string.H"
struct linklist
{
char data;
linklist *next;
};
linklist *reverse(linklist *H)
{
linklist *q,*p=H->next; //*p指向第一个结点
H->next=NULL; //将原链表置空
while(p->next)
{
q=p; //将q指向原链表中的第一个结点
p=p->next;
q->next=H->next ;
H->next=q;
}
return H;
}
void main()
{
linklist *H=new linklist;
linklist *p=H;
char dat[100];
int i,n;
printf("请输入字符串:\n");
gets(dat);
n=strlen(dat);
for(i=0;i<n;i++)
{
H->data=dat[i];
H->next=new linklist;
H=H->next;
H->next=0;
}
H=reverse(p);
printf("\n通过链表逆置后的结果为:\n");
while(H)
{
printf("%2c",H->data);
H=H->next;
}
printf("\n");
}