创建链表有关问题

创建链表问题
Lnode* Creat(){
//创建链表
Lnode *head, *p, *rear;
int x;//数据
char a;//链表名
head = new Lnode;
head->next = NULL;
rear = head;
cout << "输入链表名";
cin >> a;
cout << "输入数据,输入-1时结束输入" << endl;
cin >> x;
while (x+1){
p = new Lnode;
p->data = x;
rear->next = p;
rear = p;
cin >> x;
}
rear->next = NULL;
return head;
}


运行时一直运行下去结果都是1,哪里出问题了?

              

------解决方案--------------------
以下这行出问题了:
char a;
即使只输入1个字符,回车后也把附近变量的值破坏了.

建议改为数组,例如:
char a[20];
------解决方案--------------------
逻辑上没看成什么错误,不过你返回局部指针变量的的值,铁定会发生不可预料的问题!!