c++ 设计一个整数链表类,满足栈操作。 15
设计一个整数链表类,满足栈操作。即,总在链表首插入结点,总在链表首取出(删除)结点。类中需有记录结点个数的静态数据成员。定义并测试该链表类,实现链表的创建和删除操作,以及...
设计一个整数链表类,满足栈操作。即,总在链表首插入结点,总在链表首取出(删除)结点。类中需有记录结点个数的静态数据成员。定义并测试该链表类,实现链表的创建和删除操作,以及查询节点、插入节点和删除节点的操作。
编写测试代码,取100次随机数(范围1~100),每取到比前一个随机数大时,放入链表中,否则,略去。然后逐个取出,求其和。求和的函数不要在链表类中完成,可定义非成员函数,以使该链表类具有通用性。
用堆分配方法逐个产生满足条件的结点,插入链表中。每当从链表中取出一个结点时,要及时将结点删除。注意:如果链表为空,而要做取出结点操作,则类必须给出错误信息。
答案正确的话追加30分,谢谢大家了 展开
编写测试代码,取100次随机数(范围1~100),每取到比前一个随机数大时,放入链表中,否则,略去。然后逐个取出,求其和。求和的函数不要在链表类中完成,可定义非成员函数,以使该链表类具有通用性。
用堆分配方法逐个产生满足条件的结点,插入链表中。每当从链表中取出一个结点时,要及时将结点删除。注意:如果链表为空,而要做取出结点操作,则类必须给出错误信息。
答案正确的话追加30分,谢谢大家了 展开
展开全部
#include<iostream>
#include<ctime>
#include<stdlib.h>
using namespace std;
int data[100]; //放数据
struct Node //链表节点
{
int num;
Node *next;
};
class INT // INT 类
{
private:
Node *d;
Node *head;
static int count;
public:
friend void up(INT& KKK);
INT()
{
this->d=NULL;
this->head=NULL;
}
~INT()
{
cout<<"Destrucing called ! "<<endl; //析构
}
void creat(int a);
void build();
};
int INT::count=0;
void INT::creat(int a) //创建链表的函数
{
if(head==NULL)
{
head=new Node;
head->num=a;
head->next=NULL;
count++; //计数器
}
else
{
d=head;
while(d->next!=NULL)
d=d->next;
Node* k=new Node;
k->num=a;
d->next=k;
k->next=NULL;
count++;
}
}
void INT::build() //产生随机数
{
srand(time(NULL));
for(int i=0;i<100;i++)
data[i]=rand()%191+10;
for(i=0;i<100;i++)
{
if(i==0) this->creat(data[i]);
else
{
if(data[i]>data[i-1])
this->creat(data[i]); //调用创建链表的函数
}
}
}
void up(INT & KKK) //加和函数
{
int sum=0;
Node* temp=KKK.head;
while(temp!=NULL)
{
sum+=temp->num;
Node* q=temp->next;
delete temp; //加完之后删除
temp=q;
}
cout<<sum<<endl;
}
int main()
{
INT KKK;
KKK.build(); //先产生数据,在此过程中建立链表
up(KKK);
return 0;
}
我写的是10到200的。
望采纳
#include<ctime>
#include<stdlib.h>
using namespace std;
int data[100]; //放数据
struct Node //链表节点
{
int num;
Node *next;
};
class INT // INT 类
{
private:
Node *d;
Node *head;
static int count;
public:
friend void up(INT& KKK);
INT()
{
this->d=NULL;
this->head=NULL;
}
~INT()
{
cout<<"Destrucing called ! "<<endl; //析构
}
void creat(int a);
void build();
};
int INT::count=0;
void INT::creat(int a) //创建链表的函数
{
if(head==NULL)
{
head=new Node;
head->num=a;
head->next=NULL;
count++; //计数器
}
else
{
d=head;
while(d->next!=NULL)
d=d->next;
Node* k=new Node;
k->num=a;
d->next=k;
k->next=NULL;
count++;
}
}
void INT::build() //产生随机数
{
srand(time(NULL));
for(int i=0;i<100;i++)
data[i]=rand()%191+10;
for(i=0;i<100;i++)
{
if(i==0) this->creat(data[i]);
else
{
if(data[i]>data[i-1])
this->creat(data[i]); //调用创建链表的函数
}
}
}
void up(INT & KKK) //加和函数
{
int sum=0;
Node* temp=KKK.head;
while(temp!=NULL)
{
sum+=temp->num;
Node* q=temp->next;
delete temp; //加完之后删除
temp=q;
}
cout<<sum<<endl;
}
int main()
{
INT KKK;
KKK.build(); //先产生数据,在此过程中建立链表
up(KKK);
return 0;
}
我写的是10到200的。
望采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询