Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Abbiamo provato le nuove CPU Intel Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: più core e ottimizzazioni al funzionamento interno migliorano le prestazioni, anche in virtù di prezzi annunciati interessanti. A questo si aggiungono nuove ottimizzazioni software. Purtroppo, a fronte di prestazioni di calcolo elevate, il quadro rimane incerto nel gaming, dove l'andamento rimane altalenante. Infine, rimane il problema della piattaforma a fine vita.
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
Il modello "build to order" di PCSpecialist permette di selezionare una struttura base per un sistema, personalizzandolo in base alle specifiche esigenze con una notevole flessibilità di scelta tra i componenti. Il modello Lafité 14 AI AMD è un classico notebook clamshell compatto e potente, capace di assicurare una elevata autonomia di funzionamento anche lontano dalla presa di corrente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-12-2007, 15:54   #1
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
[C] Inizializzare una lista

Allora, devo fare un programma che data una lista con elementi presi da input chiami una funzione che togla un determinato elemento k dalla lista, anch'esso preso da input. cioè elimini dalla lista la prima occorrenza di k

se ad esempio l'input è 3 5 2 7 3

la lista sarà cosi 3->7->2->5->3

cioè il primo elemento inserito sarà l'ultimo della lista e il secondo il penultimo e cosi via

ho fatto la funzione ma non capisco come si inizializza la lista, cioè come si inseriscono gli elementi. mi date una mano?

Codice HTML:
#include <stdio.h>

struct nodo 
{
	int elem;
	struct nodo *next;
};

typedef struct nodo listaElem;
typedef struct nodo *listaPtr;

listaPtr eliminaPrimo(listaPtr l, int k){
         
         listaPtr prev, curr, tempPtr;
         
         if(k==l->elem){
                        tempPtr=l;
                        l=l->next;
                        free(tempPtr);
                        return l;}
                        
         else{
              prev=l;
              curr=l->next;
              while((curr!=NULL) && (curr->elem != k)){
                                 prev=curr;
                                 curr=curr->next;}
                                 
              if(curr!=NULL){
                             tempPtr=curr;
                             prev->next=curr->next;
                             free(tempPtr);
                             return l;
                             }
                             return l;}
}

int main(){
    
    int n=0;
    int k=0;
    int i=0;
    
    scanf("%d", &n); numero di elementi della lista
    scanf("%d", &k);  elemento da eliminare

    
    
    
}
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2007, 17:35   #2
supermario
Senior Member
 
L'Avatar di supermario
 
Iscritto dal: Oct 2001
Messaggi: 7906
non vedo malloc nel tuo codice, sostanzialmente gli elementi della lista si creano così e poi si aggiornano i link

vuoi fare un inserimento in testa quindi basta aggiornare i link per ogni malloc senza scorrere la lista

la malloc dovrebbe essere una cosa del tipo

elemento = (struct *)malloc(sizeof(struct));
supermario è offline   Rispondi citando il messaggio o parte di esso
Old 25-12-2007, 13:28   #3
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
sisi questo piu o meno lo sapevo, ma non so proprio come scrivere tutto il codice per l'inserimento degli elementi, compreso la scanf. puoi darmi una mano?


grazie mille
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2007, 13:14   #4
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
ho riscritto tutto piu semplice per capire bene due cose

1-è giusta la dichiarazione della struttura/lista?

2-mi aiutate a scrivere il codice per inserire gli elementi in testa?
Codice HTML:
#include <stdio.h>

struct nodo
{
       int elem;
       struct nodo *next;};
       
typedef struct nodo *listaPtr;
typedef struct nodo *listaElem;     

listaPtr eliminaPrimo(listaPtr l, int k){
         
         
         
         
         
         
         }





int main(){
    
    int n=0;
    int k=0;
    
    scanf("%d", &n);  /*INSERISCO IL NUMERO DI ELEMENTI DELLA LISTA*/
    
    elem = (struct *)malloc(sizeof(struct));
    /*INSERIRE ELEMENTI LISTA SEMPRE IN TESTA*/
    
    scanf("%d", &k);  /*INSERISCO IL NUMERO DA ELIMINARE*/
    
    
    
    
    
    
}
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2007, 14:35   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da xbubbax Guarda i messaggi
1-è giusta la dichiarazione della struttura/lista?

2-mi aiutate a scrivere il codice per inserire gli elementi in testa?
Mi sfugge qualcosa .... non avevo già fatto un esempio in <questa> discussione? (beh, avevo fatto l'esempio solo di un "append" .... l'inserimento in testa però è ancora più semplice).


Ok ... faccio un esempio più completo:

Codice:
#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
    int          data;
    struct node *next;
} NODE, *PNODE, **PPNODE;

int List_AddFirst (PPNODE pproot, int data)
{
    PNODE pnode;

    if (pproot == NULL)
        return 0;

    if ((pnode = (PNODE) malloc (sizeof (NODE))) == NULL)
        return 0;

    pnode->data = data;
    pnode->next = *pproot;

    *pproot = pnode;
    return 1;
}

int List_AddLast (PPNODE pproot, int data)
{
    PNODE pnode;

    if (pproot == NULL)
        return 0;

    if ((pnode = (PNODE) malloc (sizeof (NODE))) == NULL)
        return 0;

    pnode->data = data;
    pnode->next = NULL;

    while (*pproot != NULL)
        pproot = &(*pproot)->next;
    
    *pproot = pnode;
    return 1;
}

int List_Free (PPNODE pproot)
{
    PNODE pnode, pnode_t;

    if (pproot == NULL)
        return 0;

    pnode = *pproot;

    while (pnode != NULL)
    {
        pnode_t = pnode->next;
        free (pnode);
        pnode = pnode_t;
    }

    *pproot = NULL;
    return 1;
}


int main (void)
{
    PNODE proot = NULL, pnode;

    List_AddLast (&proot, 27);
    List_AddLast (&proot, 7);
    List_AddLast (&proot, 87);
    List_AddFirst (&proot, 5);
    List_AddFirst (&proot, 2);

    pnode = proot;

    while (pnode != NULL)
    {
        printf ("%d\n", pnode->data);
        pnode = pnode->next;
    }

    List_Free (&proot);

    return 0;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2007, 17:59   #6
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
si in effetti gia mi avevi aiutato ma ora ho dimenticato come si fa

ora do un'occhiata a quello che hai scritto
grazie
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2007, 18:02   #7
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
nell'esempio che hai postato in questa discussione cosa mi serve a me?

cioè perchè hai fatto delle funzioni? le devo usare per inserire gli elementi?
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2007, 18:18   #8
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
le funzioni non sono necessarie ma molto utili... quelle che ti servono a te sono un po' tutte
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 26-12-2007, 18:25   #9
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
allora, ho fatto tutto il programma aiutandomi con i vari post del forum, il programma deve eliminare la prima occorrenza di un elemento k dalla lista. non so perchè mi da errore però

Codice HTML:
#include <stdio.h>
#include <stdlib.h>

/*STRUTTURA*/
struct list                    
{
       int value;
       struct list *nextPtr;};
       
/*INIZIALIZZAZIONE*/   
    
void init(struct list **ptrPtr){
     ptrPtr==NULL;}

/*INSERIMENTO IN TESTA*/

void preinsert(struct list **ptrPtr, int value)
{
     struct list *tmpPtr;
     tmpPtr= *ptrPtr;
     *ptrPtr=(struct list*) malloc(sizeof(struct list));
     (*ptrPtr)->nextPtr=tmpPtr;
     (*ptrPtr)->value=value;}      

listaPtr eliminaPrimo(listaPtr l, int k)
{
         listaPtr prev,curr,tempPtr;
         if(k==l->elem){
                        tempPtr=l;
                        l=l->next;
                        free(tempPtr);
                        return l;}
                        
                        else{
                             prev=l;
                             curr=l->next;
                             while((curr!=NULL)&&(curr->elem!=k)){
                                                                  prev=curr;
                                                                  curr=curr->next;}
                                                                  
                        if(curr!=NULL){
                                       tempPtr=curr;
                                       prev->next=curr->next;
                                       free(tempPtr);
                                       return l;}
                                       return l;}
         
         

int main(){
    
    struct list *ptr;
    
    int n=0;
    int valore=0;
    int k=0;
    int i=0;
    init(&ptr);
    
    scanf("%d", &n);  /*INSERISCO IL NUMERO DI ELEMENTI DELLA LISTA*/
    
    for(i=0;i<n;i++){
                     scanf("%d", &valore);
                     preinsert(&ptr,valore);}
    
    
    scanf("%d", &k);  /*INSERISCO IL NUMERO DA ELIMINARE*/
    
    
    
    
    
    
}
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 27-12-2007, 14:51   #10
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
mi aiutate a trovare l'errore?
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 28-12-2007, 10:41   #11
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
dov'è dichiarato listaPtr come tipo?

perché non richiami la funzione per eliminare nel main?


che errori e dove te li da?
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 29-12-2007, 15:37   #12
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Bastava cambiare così il ciclo for nel main (e comunque bastava un while ):
Codice:
for (i = 0; i < n; i++) {
	listaPtr t = malloc(sizeof(struct list));

	scanf("%d", &valore);
	t->value = valore;
	t->nextPtr = ptr;
	ptr = t;
}
Buoni homework.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 13:40   #13
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
ho provato a riscrivere tutto ma mi da qualche errore nel main

Ultima modifica di xbubbax : 02-01-2008 alle 13:42.
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 13:43   #14
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
Codice HTML:
#include <stdio.h>

struct nodo{
       int elem;
       struct nodo *next;
       };

typedef struct nodo  L_ELEM;
typedef struct nodo *listaPtr;

listaPtr eliminaPrimo(listaPtr l, int k)
{
	listaPtr prev,curr,tempPtr;
	if (k==l->elem){
		tempPtr=l;
		l=l->next;
		free(tempPtr);
		return l;
	}
	else{
		prev=l;
		curr=l->next;
		while ((curr!=NULL) && (curr->elem != k)){
			prev=curr;
			curr=curr->next;
		}
		if (curr !=NULL){
			tempPtr=curr;
			prev->next=curr->next;
			free(tempPtr);
			return l;
		}
		return l;

	}

int main(){
    
    struct nodo *l;
    
    int i=0;
    int n=0;
    int valore=0;
    int k=0;
    
    scanf("%d", &n);
    
    for(i=0;i<n;i++){
                     listaPtr l=malloc(sizeof(struct nodo));
                     
                     scanf("%d", &valore);
                     l->elem=valore;
                     l->next=listaPtr;
                     listaPtr=l;}
    
    scanf("%d", &k);
    
}
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 13:52   #15
supermario
Senior Member
 
L'Avatar di supermario
 
Iscritto dal: Oct 2001
Messaggi: 7906
quando fai l'allocazione della struttura ti conviene fare il casta puntatore
supermario è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 13:56   #16
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
cioè?
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 13:58   #17
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
Codice:
listaPtr l=(listaPtr)malloc(sizeof(struct nodo));
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 14:00   #18
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
grazie ora provo
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 14:01   #19
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
non va, secondo me ho sbagliato qualcosa nelle dichiarazioni
Codice HTML:
#include <stdio.h>

struct nodo{
       int elem;
       struct nodo *next;
       };

typedef struct nodo  L_ELEM;
typedef struct nodo *listaPtr;

listaPtr eliminaPrimo(listaPtr l, int k)
{
	listaPtr prev,curr,tempPtr;
	if (k==l->elem){
		tempPtr=l;
		l=l->next;
		free(tempPtr);
		return l;
	}
	else{
		prev=l;
		curr=l->next;
		while ((curr!=NULL) && (curr->elem != k)){
			prev=curr;
			curr=curr->next;
		}
		if (curr !=NULL){
			tempPtr=curr;
			prev->next=curr->next;
			free(tempPtr);
			return l;
		}
		return l;

	}

int main(){
    
    struct nodo *l;
    
    int i=0;
    int n=0;
    int valore=0;
    int k=0;
    
    scanf("%d", &n);
    
    for(i=0;i<n;i++){
                     listaPtr l=(listaPtr)malloc(sizeof(struct nodo));
                     
                     scanf("%d", &valore);
                     l->elem=valore;
                     l->next=listaPtr;
                     listaPtr=l;}
    
    scanf("%d", &k);
    
}
xbubbax è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2008, 14:26   #20
xbubbax
Senior Member
 
Iscritto dal: Apr 2007
Messaggi: 381
qualcuno mi da una mano a controllare la parte sull'inserimento degli elementi?

non capisco dove sbaglio
xbubbax è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Huawei XMAGE Awards 2026: al via la deci...
Ayaneo non ce la fa: la crisi di RAM e S...
Roborock F25 Ultra è la vera novi...
Dopo Bluepoint, Sony chiude un altro stu...
Windows e il caos delle interfacce: l'ex...
HP lancia i nuovi HyperX OMEN MAX 45L e ...
Amazon compra Fauna Robotics: il futuro ...
Arm entra direttamente nel mercato delle...
Epic Games licenzia 1000 persone, il mot...
Offerte OLED su Amazon: protagonisti gli...
Non solo smartphone: ecco come 'Human x ...
Offerte Amazon sui componenti PC: schede...
La Switch 2 ha venduto meno del previsto...
Crimson Desert si ferma: il lancio &egra...
LG è ancora leader indiscussa del...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v