ВОПРОС · Q&A

Нужно Оптимизировать Параметр

2 ответов 3,3 тыс.
Автор вопроса
есть код программы. нужно выполнить оптимизировать РОР. как сделать? обращение идет один раз. соотвественно можно сократить время на выполнение но не знаю как. (в конце программы указано)
вот собственно:
#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;
}
 
1. Отредактируй сообщение и вставь код в тэг С++.
2. "обращение идет один раз" - обращение идет три раза.
 
чесно говоря не уверен, но возможно вот такой вариант подойдет
C++:
int Pop()
{
struct elem *p;
p=top;
top=p->link;
return p->inf;
}

в итоге избавляемся от переменной temp, и строки с удалением, а переменная p должна удалиться при выходе из процедуры т.к она локальная.