异质链表(C++)
2005-04-14 15:13
921 查看
请编写程序创建一异质链表。该链表内有四种节点类型。
第一种:每节点能存储一最多20个字符的字符串;
第二种:每节点能存储三个整数;
第三种:每节点能存储两个浮点数;
第四种:每节点能存储两个整数和一个浮点数。
要求:主函数以4-1-4-1-2-3-3-4-2-3-2-1-4的顺序创建链表并遍历输出。
#include<iostream.h>
#include<string.h>
#include<conio.h>
class Base
{
public:
virtual void show_data() = 0 ;
};
class Node1 : public Base
{
private:
char data1[21];
public:
void set(const char *d1)
{
strcpy(data1,d1);
}
virtual void show_data()
{
cout<<endl<<" Node 1 Include : "<<data1<<endl;
}
};
class Node2 : public Base
{
private:
int data2,data3,data4;
public:
void set(int d2,int d3,int d4)
{
data2 = d2 ;
data3 = d3 ;
data4 = d4 ;
}
virtual void show_data()
{
cout<<endl<<" Node 2 Include : ";
cout<<data2<<" , "<<data3<<" , "<<data4<<endl;
}
};
class Node3 : public Base
{
private:
float data5,data6;
public:
void set(float d5,float d6)
{
data5 = d5 ;
data6 = d6 ;
}
virtual void show_data()
{
cout<<endl<<" Node 3 Include : ";
cout<<data5<<" , "<<data6<<endl;
}
};
class Node4 : public Base
{
private:
int data7,data8;
float data9;
public:
void set(int d7,int d8,float d9)
{
data7 = d7 ;
data8 = d8 ;
data9 = d9 ;
}
virtual void show_data()
{
cout<<endl<<" Node 4 Include : ";
cout<<data7<<" , "<<data8<<" , "<<data9<<endl;
}
};
void main(void)
{
clrscr();
Base *pBase = NULL;
Node1 *pNode1 = new Node1();
Node2 *pNode2 = new Node2();
Node3 *pNode3 = new Node3();
Node4 *pNode4 = new Node4();
pNode4 -> set(12,23,12.3);
pBase = pNode4;
pBase -> show_data();
pNode1 -> set("abcdefg");
pBase = pNode1;
pBase -> show_data();
pNode4 -> set(45,56,45.5);
pBase = pNode4;
pBase -> show_data();
pNode1 -> set("hijklmn");
pBase = pNode1;
pBase -> show_data();
pNode2 -> set(10,20,30);
pBase = pNode2;
pBase -> show_data();
pNode3 -> set(22.2,33.3);
pBase = pNode3;
pBase -> show_data();
pNode3 -> set(44.4,55.5);
pBase = pNode3;
pBase -> show_data();
pNode4 -> set(78,89,78.9);
pBase = pNode4;
pBase -> show_data();
pNode2 -> set(40,50,60);
pBase = pNode2;
pBase -> show_data();
pNode3 -> set(77.7,88.8);
pBase = pNode3;
pBase -> show_data();
pNode2 -> set(70,80,90);
pBase = pNode2;
pBase -> show_data();
pNode1 -> set("opqrstuvwxyz");
pBase = pNode1;
pBase -> show_data();
pNode4 -> set(123,456,123.456);
pBase = pNode4;
pBase -> show_data();
}
第一种:每节点能存储一最多20个字符的字符串;
第二种:每节点能存储三个整数;
第三种:每节点能存储两个浮点数;
第四种:每节点能存储两个整数和一个浮点数。
要求:主函数以4-1-4-1-2-3-3-4-2-3-2-1-4的顺序创建链表并遍历输出。
#include<iostream.h>
#include<string.h>
#include<conio.h>
class Base
{
public:
virtual void show_data() = 0 ;
};
class Node1 : public Base
{
private:
char data1[21];
public:
void set(const char *d1)
{
strcpy(data1,d1);
}
virtual void show_data()
{
cout<<endl<<" Node 1 Include : "<<data1<<endl;
}
};
class Node2 : public Base
{
private:
int data2,data3,data4;
public:
void set(int d2,int d3,int d4)
{
data2 = d2 ;
data3 = d3 ;
data4 = d4 ;
}
virtual void show_data()
{
cout<<endl<<" Node 2 Include : ";
cout<<data2<<" , "<<data3<<" , "<<data4<<endl;
}
};
class Node3 : public Base
{
private:
float data5,data6;
public:
void set(float d5,float d6)
{
data5 = d5 ;
data6 = d6 ;
}
virtual void show_data()
{
cout<<endl<<" Node 3 Include : ";
cout<<data5<<" , "<<data6<<endl;
}
};
class Node4 : public Base
{
private:
int data7,data8;
float data9;
public:
void set(int d7,int d8,float d9)
{
data7 = d7 ;
data8 = d8 ;
data9 = d9 ;
}
virtual void show_data()
{
cout<<endl<<" Node 4 Include : ";
cout<<data7<<" , "<<data8<<" , "<<data9<<endl;
}
};
void main(void)
{
clrscr();
Base *pBase = NULL;
Node1 *pNode1 = new Node1();
Node2 *pNode2 = new Node2();
Node3 *pNode3 = new Node3();
Node4 *pNode4 = new Node4();
pNode4 -> set(12,23,12.3);
pBase = pNode4;
pBase -> show_data();
pNode1 -> set("abcdefg");
pBase = pNode1;
pBase -> show_data();
pNode4 -> set(45,56,45.5);
pBase = pNode4;
pBase -> show_data();
pNode1 -> set("hijklmn");
pBase = pNode1;
pBase -> show_data();
pNode2 -> set(10,20,30);
pBase = pNode2;
pBase -> show_data();
pNode3 -> set(22.2,33.3);
pBase = pNode3;
pBase -> show_data();
pNode3 -> set(44.4,55.5);
pBase = pNode3;
pBase -> show_data();
pNode4 -> set(78,89,78.9);
pBase = pNode4;
pBase -> show_data();
pNode2 -> set(40,50,60);
pBase = pNode2;
pBase -> show_data();
pNode3 -> set(77.7,88.8);
pBase = pNode3;
pBase -> show_data();
pNode2 -> set(70,80,90);
pBase = pNode2;
pBase -> show_data();
pNode1 -> set("opqrstuvwxyz");
pBase = pNode1;
pBase -> show_data();
pNode4 -> set(123,456,123.456);
pBase = pNode4;
pBase -> show_data();
}
相关文章推荐
- 将消息推入消息队列并从消息队列中取出------利用异质链表和C++的多态性
- 异质链表(C++实现)
- [C++]实现异质链表
- c++模板编程-异质链表
- C++实现单链表
- 链表数据结构(C/C++语言实现)
- 用C++写的学生成绩管理系统(比较简单的没有使用链表,只是用到了类和对象)
- c++链表是否含有环
- C++实现双向链表
- 2011-05-09 16:21 C++ 链表之双向链表
- C++模板实现单链表
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
- 数据结构——链表的C++实现
- 数据结构(C++实现)--链表(1) 基本实现
- 单链表的逆置-C++实现
- 用C++实现的双向链表
- C++模板链表实现优先级队列
- C语言--链表的常见操作(在DVE-C++编译运行通过)
- C/c++语言,求单向链表的逆序_普通方法_header+p+q工作指针
- 剑指offer--python --c++--从尾到头打印链表