Fontos linkek a C-ről:
Prog.hu-s cikkek
Prog.hu-s tudástár témák
The C Library Reference Guide
Standard C
Wikipedia
C Tutorial
Programming in C
Bevezetés a C programozási nyelvbe
Gyorskeresés
Legfrissebb anyagok
- Retro Retro Kocka Kuckó 2024
- Bemutató Spyra: nagynyomású, akkus, automata vízipuska
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
Általános témák
LOGOUT.hu témák
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [sziku69:] Szólánc.
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [antikomcsi:] Való Világ: A piszkos 12 - VV12 - Való Világ 12
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [Brogyi:] CTEK akkumulátor töltő és másolatai
- [Re:] [Luck Dragon:] Kenyér
- [Re:] [Mr. Y:] Motoros sztorik #05
- [Re:] Elektromos rásegítésű kerékpárok
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
- Utoljára frissítve: 2014-04-25 14:12:00
LOGOUT.hu
Hozzászólások
Dirty_Pio
csendes tag
Sziasztok, van egy kis problemam a listakkal c -ben. Nem a hagyomanyos pointeres modon szeretnem megoldani a feladatot, azaz letrehozni egy listat es kivenni, beletenni elemeket es kiiratni, hanem a kurzoros megoldassal, amikor egy listat vektor segitsegevel szimulalsz. Itt jon a kod:
#include <stdio.h>
#include <stdlib.h>
#define maxlen 100
typedef char tipcursor;
typedef int tipnod;
typedef struct tipelem{
tipnod element;
tipcursor next;
}tipelement;
typedef tipcursor tiplista;
void init(tipelement z[maxlen])
{
int i;
for (i=0;i<maxlen-1;i++)
z[i].next=i+1;
z[maxlen].next=-1;
}
tiplista add(tiplista *d,tiplista p,tipelement z[maxlen],tipnod e)
{
if (p==-1) {
p=*d;
z[*d].element=e;
*d=z[*d].next;
z[p].next=-1;
}
else{
tipcursor k=p;
while ((z[k].element<e)&&(k!=-1)&&(z[k].next!=-1))
{
k=z[k].next;
}
tipnod temp;
while (k!=-1)
{
temp=z[k].element;
z[k].element=e;
e=temp;
if(-1==(k=z[k].next)) z[k].next=*d;
}
z[*d].element=e;
temp=*d;
*d=z[*d].next;
z[temp].next=-1;
}
return p;
}
void list(tiplista s,tipelement z[maxlen])
{
while (s!=-1)
{
printf("%i ",z[s].element);
printf("%i ",z[s].next);
s=z[s].next;
}
}
int main(void)
{
tipelement zona[maxlen];
tiplista l=-1,m=-1,*disp;
disp=(tiplista*)malloc(sizeof(tiplista));
*disp=0;
init(zona);
l=add(disp,l,zona,16);
l=add(disp,l,zona,5);
list(l,zona);
l=add(disp,l,zona,41);
list(l,zona);
return 0;
}
Nos a problemam az, hogy a program nem helyezi jol be az elemeket a helyukre, azaz miutan betettem a 16-ost utana az o helyere teszi az 5-t, de nem tolja arrebb a 16-t, pedig az add fuggvenybe minden jol megy, csak kiirataskor mar nem oks a lista.
Elore is koszonom.
[ Szerkesztve ]
Téma tudnivalók
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Mai Hardverapró hirdetések
prémium kategóriában
- iPhone 15 Pro / Black Titanium / 256 GB / Bontott doboz / 0 perces / Kártyafüggetlen
- IPhone 14 Pro 128GB gyári független megkímélt jó akku
- iPhone 14 Pro / Gold / 128 GB / 99% akkumlátor / Kártyafüggetlen / Számla + Garancia
- iPhone 14 Pro Max / Gold / 256 GB / 87% akkumlátor / Kártyafüggetlen / Számla + Garancia
- iPhone 14 Pro Max / Space Black / 256 GB / 92% akkumlátor / Kártyafüggetlen / Számla + Garancia