G
Guest
есть код программы. нужно выполнить оптимизировать РОР. как сделать? обращение идет один раз. соотвественно можно сократить время на выполнение но не знаю как. (в конце программы указано)
вот собственно:
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
struct elem{
int inf;
struct elem *link;
} *top=NULL;
void Push(int val){
struct elem *p=new elem;
p->inf=val;
p->link=top;
top=p;
}
int Pop(){
struct elem *p;
int temp;
temp=top->inf;
p=top;
top=p->link;
delete p;
return temp;
}
void Print(){
struct elem *tmp;
tmp=top;
while(tmp!=NULL){
printf("Value=%d\n",tmp->inf);
tmp=tmp->link;
}
}
void Swop(){
struct elem *tmp;
tmp=top;
int tempval=0;
while(tmp!=NULL){
if(tmp->link==NULL){
tempval=tmp->inf;
tmp->inf=top->inf;
top->inf=tempval;
}
tmp=tmp->link;
}
}
int main(int argc, char** argv) {
int i=0;
for(i=0;i<5;i++)Push(i);
printf("ishodny spisok:\n");
Print();
for(int j=i;j<i+2;j++)Push(j);
printf("dabavili 2 elementa:\n");
Print();
printf("menayem perviy i posledniy mestami:\n");
Swop();
Print();
printf("udalyaem 3 pervih elementa:\n");
for(i=0;i<3;i++)Pop(); //нужно оптимизироватьPOP как?
Print();
return 0;
}
вот собственно:
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
struct elem{
int inf;
struct elem *link;
} *top=NULL;
void Push(int val){
struct elem *p=new elem;
p->inf=val;
p->link=top;
top=p;
}
int Pop(){
struct elem *p;
int temp;
temp=top->inf;
p=top;
top=p->link;
delete p;
return temp;
}
void Print(){
struct elem *tmp;
tmp=top;
while(tmp!=NULL){
printf("Value=%d\n",tmp->inf);
tmp=tmp->link;
}
}
void Swop(){
struct elem *tmp;
tmp=top;
int tempval=0;
while(tmp!=NULL){
if(tmp->link==NULL){
tempval=tmp->inf;
tmp->inf=top->inf;
top->inf=tempval;
}
tmp=tmp->link;
}
}
int main(int argc, char** argv) {
int i=0;
for(i=0;i<5;i++)Push(i);
printf("ishodny spisok:\n");
Print();
for(int j=i;j<i+2;j++)Push(j);
printf("dabavili 2 elementa:\n");
Print();
printf("menayem perviy i posledniy mestami:\n");
Swop();
Print();
printf("udalyaem 3 pervih elementa:\n");
for(i=0;i<3;i++)Pop(); //нужно оптимизироватьPOP как?
Print();
return 0;
}