草民初学链表知识。写了一个程序,但链表创建未成功。请大侠们帮我看看。非常感谢!
这是我的链表程序,程序编译可通过,应该是逻辑问题。请各位帮忙看看,不胜感激。一些自己想当然的地方我都加上注了。大家看看错在哪里。#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
class Fruit
{
public:
string name;
Fruit *next;
};
Fruit *head=NULL;
void Add(string n)//链表创建未能成功,应该是这里Add函数的问题。
{
Fruit *p;p=head;//将头指针地址赋给指针p
while(p!=NULL)//满足循环条件时尚到达链表末尾,
{
p=p->next;//使用next跳转到下一节点
}
p=new Fruit;//在链表末尾添加节点
p->name=n;p->next=NULL;
return;
};
void Display()//链表显示
{
cout<<"现有下列果类:";
Fruit *p;p=head;
while(p!=NULL)//从头指针开始一项项显示
{
cout<<p->name<<endl;
p=p->next;
}
return;
}
int main()
{
Loop:
cout<<"请选择需要的果类:1.apple 2. banana 3. pear 4. pineapple"<<endl;
int choice;cin>>choice;
switch(choice)
{
case 1:
Add("apple");break;
case 2:
Add("banana");break;
case 3:
Add("pear");break;
case 4:
Add("pineapple");break;
}
cout<<"是否继续选择?(y/n)";
char back;cin>>back;
if(back=='y'){goto Loop;}
Display();
system("pause");
return 0;
}