c++ 实现 不同类型数据 建立线性表

1.代码论英雄,在我的机器上的一个平台上能运行,我有VS2010-2005、DevCpp4.9.9.2升级版、VC++6.0。如果你额外的讲解注释和思路,我可以追加悬赏2... 1.代码论英雄,在我的机器上的一个平台上能运行,我有VS2010-2005、DevCpp 4.9.9.2升级版、VC++ 6.0。如果你额外的讲解注释和思路,我可以追加悬赏20-50
2.尽量不要用class,用typedef struct实现public的class功能
3.定义的必须是一个模板,并且用户输入1是整型,2是浮点型,3是字符串型。

示例(我的源代码):
/*LinkList.h*/
#ifndef _LinkList_H_
#define _LinkList_H_

#pragma once

typedef struct node
{
template<typename DataType>
DataType Data;
struct node *Next;
}LinkList;

LinkList *CreatLinkList(unsigned short Cnt);
void DeleteLinkList(LinkList &P,unsigned short Location);
void InsertLinkList(LinkList &P,unsigned short Location);
void DestroyedLinkList(LinkList &P,unsigned short Location);
unsigned short LengthLinkList(LinkList &P);

#endif

/*LinkList.cpp*/
#include"LinkList.h"
#include<iostream>
using namespace std;

/*
这个函数需要你帮助,他表明了如果输入1,生成int对应的模板;输入2,生成double对应的模板;输入3,生成char对应的模板。编译时,提示:1-不能使用结构体模板,这是非法的;(言下之意所有用struct声明的结构体定义的变量都是错的)2-不能使用多个模板;3-DataType重复定义;
*/
LinkList *CreatLinkList(unsigned short Cnt)
{
unsigned short i;
LinkList *P,*Head;
cout<<"Input the kind of data(1 stand for integer,2 stand for double,3 stand for char):";
switch(i)
{
case 1:
typedef int DataType;
break;
case 2:
typedef double DataType;
break;
case 3:
typedef char DataType;
break;
default:
cout<<"Data Error!Exit!\n";
exit(0);
}
DataType temp;
Head=P=new LinkList;
for(i=0;i<Cnt;i++)
{
cout<<"Input the Data:";
cin>>temp;
P->Data=temp;
P->Next=new LinkList;;
P=P->Next;
}
delete P;
return Head;
}
展开
 我来答
平填真杯具平男
2011-11-28 · TA获得超过1832个赞
知道大有可为答主
回答量:1390
采纳率:100%
帮助的人:953万
展开全部
1-不能使用结构体模板,这是非法的;(言下之意所有用struct声明的结构体定义的变量都是错的)

什么意思啊?不明白。
不能使用结构体模板的意思是所有用struct声明的结构体定义的变量都是错的????

运行时决定类型的办法:1、泛型编程;2、定义多个结构体,运行时决定实例化哪一个。
追问
就是希望用户输入1,所有的DataType是int;2对应double,不想用模板或者类,不知道能不能用宏定义替换或者typedef配合条件语句实现
case 1:
typedef int DataType;
break;
case 2:
typedef double DataType;
break;
case 3:
typedef char DataType;
break;
default:
cout<<"Data Error!Exit!\n";
exit(0);
追答
宏定义和typedef是预编译时期的工作,也就是说,当你开始编译的时候,宏定义就已经被替换成你定义的内容了,无法在运行期改变。
例如
#define X (100)
当你编译的时候,X就已经被全部替换成(100)了,运行的时候没机会改变它。

所以,用typedef或宏定义来实现运行时的类型变化是不可能的。除非实现多个宏定义,由用户输入来实现区分,但这样做与定义多个结构体没有任何区别
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式