• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

  • Автор темы Guest
  • Дата начала
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;
}
 
L

lazybiz

1. Отредактируй сообщение и вставь код в тэг С++.
2. "обращение идет один раз" - обращение идет три раза.
 
O

overbest

чесно говоря не уверен, но возможно вот такой вариант подойдет
C++:
int Pop()
{
struct elem *p;
p=top;
top=p->link;
return p->inf;
}

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!