这是一个单链表就地倒序的程序,输入字符创建单链表,后输出倒序后的单链表。可是为什么没有输出呢?
#include <iostream>
using namespace std;
struct Node//建立链表结点
{
Node(char e,Node* next)//构造函数
{
element=e;
link=next;
}
char element;//字符元素
Node *link;//指向后一个节点的指针
};
void print(Node*head)//输出单链表
{
while(head!=NULL)
{cout<<head->element;
cout<<endl;
head=head->link;
}
}
void invert(Node*&head)//单链表倒序
{
Node*p,*q,*r;
p=head;
q=p->link;
while(q!=NULL)//不断地将后一个节点的指针指向前面一个节点
{
r=q->link;
q->link=p;
p=q;
q=r;
}
head->link=NULL;
head=p;
}
void main()
{ Node *List=NULL;//声名一个指向Node型数据的指针作为链表的头指针
cout<<"请输入字符,以回车结束输入:\n";
char c;
Node *p=NULL;
Node *r=NULL;
while((c=getchar())!='\n');//判断输入的是否为回车键,是的话则结束输入
{ p=new Node(c,NULL);
if(List!=NULL)
r->link=p;
else List=p;
r=p;
}
cout<<"输入的字符为:"<<endl;
void print(Node *List);//调用函数输出链表
void invert(Node *&List);//调用函数对链表进行倒链处理
cout<<"倒链为:"<<endl;
void print(Node *List); //输出倒链
}