1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

Тема в разделе "C/C++/C#", создана пользователем -, 25 янв 2012.

  1. Гость

    Репутация:
    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;
    }
     
  2. lazybiz

    lazybiz Well-Known Member

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    1. Отредактируй сообщение и вставь код в тэг С++.
    2. "обращение идет один раз" - обращение идет три раза.
     
  3. overbest

    overbest Гость

    Репутация:
    0
    чесно говоря не уверен, но возможно вот такой вариант подойдет
    Код:
    int Pop()
    {
    struct elem *p;
    p=top;
    top=p->link;
    return p->inf;
    }
    в итоге избавляемся от переменной temp, и строки с удалением, а переменная p должна удалиться при выходе из процедуры т.к она локальная.
     
Загрузка...

Поделиться этой страницей