typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList
//逆向建立单链表
void CreateList(LinkList &L,int n)
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf(&p->data);
p->next=L->next;
L-next=p;
}
}
//带头结点的单链表的逆置运算
void reverse(pointer h)
{
pointer p,q;
p=h->next;
h->next=NULL;
while(p!=NULL)
{
q=p;
p=p->next; //依次链接
q->next=h->next; //将q所指结点链接到新链表中
h->next=q; //头结点指向新链接的结点,也就会第一个结点
}
}
//不带头结点的单链表的逆置运算
void reverse(LinkList &L)
{
p=null;
q=L;
while(q!=null)
{
L=L->next; //暂存下一个结点否则执行下一步时,就被覆盖了找不到了
q->next=p; //q是带操作结点,p是上一个结点
p=q; //将本结点设置为上一个结点
q=L; //将暂存的结点设为待操作的结点
}
L=p; //将第一个结点设置为L
}