Lineární spojový seznam
#include <stdio.h>
#include <stdlib.h>
// Hynek Darbujan SYi , codeblocks ,odstraneni polozky ze seznamu + nacteni ,verze snad 100.Je to dost moje práce.
// dost mne inspirovala stranka - http://cs.wikipedia.org/wiki/Spojový_seznam ,hlavne vlozeni , pozdeji jsem podle toho upravil strukturu tak aby to trochu "vypadalo "
//
typedef struct sp_seznam
{
int data;
struct sp_seznam *next;
} uzel;
//pridani//
uzel *pridat_na_seznam (uzel **p, int i)
{
uzel *n = NULL;
if (p) {
n = malloc(sizeof(uzel)); // vymezeni pameti
if (n) {
n->data = i;
n->next = *p;
*p = n;
}
}
return n;
}
void vypis_seznam (uzel *n) // fuknce pro vypis
{
if (!n) { // kontrola seznamu
printf("seznam je prazdny\n");
return;
}
while (n) { // vypis obsahu
printf("print %d\n", n->data);
n = n->next;
}
}
uzel *vloz_do (uzel **p, int i, int index)
{
uzel *n = NULL;
if (p) {
if (*p) { // jestli p neni prazdne
uzel *r = NULL; // namíření na zacatek
uzel *s = *p; // propojeni
int idx = 0; // pro porovnani na zacatek
while (s) {
if (idx == index) { //vlozte sem - index. kam chceme
n = malloc(sizeof(uzel)); // vymezeni pameti
if (n) {
n->data = i;
if (r) {
n->next = r->next; // vychytavka - vlozeni mezi r a r-next
r->next = n;
} else {
n->next = *p; //dalsi
*p = n;
}
}
return n;
}
idx++; // dalsi
r = s;
s = s->next;
}
if (idx == index) { // vlozit na konec - omezeni k
n = malloc(sizeof(uzel)); // vycleneni
if (n) {
n->data = i;
n->next = NULL;
r->next = n;
}
}
} else {
if (!index) { // vlozit na vrchol - omezeni h
n = malloc(sizeof(uzel)); // vycleneni
if (n) {
n->data = i;
n->next = NULL;
*p = n;
}
}
}
}
return n;
}
uzel **hledej_smudlo (uzel **n, int o) // funce na vyhledavani
{
if (n) {
while (*n) {
if (o==0) return n;
o--;// pocet cyklu
n = &(*n)->next;
}
}
return NULL;
}
void odstran(uzel **p)
{
if (p && *p) {
uzel *n = *p;
*p = (*p)->next;
free(n);
}
}
int main (void)
{
uzel *n = NULL; // na zacatek
int cislo;
int l=0;
int h=0;
int pozice;
char pozn;
pozn=0;
// naplneni seznamu
printf("jestli chcete naplnit seznam automaticky , tak zmackni 1 , jetsli ne ,tak neco jineho \n");
scanf("%d",&cislo);
if (cislo==1){
pridat_na_seznam(&n, 01);
pridat_na_seznam(&n, 12);
pridat_na_seznam(&n, 23);
pridat_na_seznam(&n, 34);
pridat_na_seznam(&n, 45);
pridat_na_seznam(&n, 56);
h=6;} // nastaveni max poctu
else {
while(cislo !=9999){
flush(cislo);
printf("zadej cislo do seznamu , az jich budes mit dost napiš 9999:\n");
scanf("%d",&cislo);
if(cislo !=9999){
pridat_na_seznam(&n,cislo);
h++;
}
}}
vypis_seznam(n);
int qw;
printf("jestli chces pridavat polozku napis 1 , jestli mazat , tak neco jinyho, jestli chces skoncit tak zmacni ten krizek vpravo nahore v rohu \n");
scanf("%d",&qw);
if (qw==1)
{
printf("zadej cislo na vlozeni do seznamu\n");
if (scanf("%d",&cislo)!=1)
{
printf("cislo ! program bude ukoncen");
return 0;}
printf("pozici pro cislo v seznamu (0 az n), vyssi cislonez je pocet polozek bude vlozeno na konec seznamu , seznam je vypsan sestupne \n");
if (scanf("%d",&pozice)!=1)
{ return 0; }
vloz_do(&n,cislo,pozice);
vypis_seznam(n);
printf("!finito!");
} else {
printf("zadej číslo polozky , co chces odstranit (0-n) , cislovani je odshora dolů \n");
if (scanf("%d",&pozice)!=1)
{ return 0;}
odstran(hledej_smudlo(&n, pozice));
vypis_seznam(n);
printf("!finito!");
return 0;}
}
int flush() { // funkce na vycisteni
char c;
c = getchar();
while (c != '\n' && c != EOF) {
c = getchar();
}
}
dodatek : jasně ,že nejsem suprprogramátor , řekl bych , že mi to někdy vůbec nejde )) ale to neznamená , že jsem tohle nedělal se nadšením :-D , btw , jestli tam mám nějaký chyby , tak sem s nima - ale nechi , žádný urážky -, nebo něco ve stylu , že napíšete , kde je chyba , ale nedáte sem její řešení , to mi je k ničemu .
Tvorbou programů se neživim a ani asi nebudu ))....jsem říkal , že jsem ďábel
ps. znáte vtipy v cčku ? tak tohle je jeden z nich :-D
-edit. poučení č1 - nedávat názvy proměnných jen písmenka - třeba fakt názvy
Hynek Dařbujan
Vyplnění kontrolního hlášení DPH přes Excel !
V podstatě jde o to abyste mohli nakopírovat excel tabulku list 1 do složky A4 tabulku z listu 2 do složky B5. Jednoduchý jako facka, ne? :-D
Hynek Dařbujan
Tak, kdy se mi má to dítě narodit? Vyber si!
"Dvacátého sedmého, nebo prvního se má narodit?", ptá se mě má sestra sedící v kuchyni. Nechápavě se ptám: "Co tim myslíš?", až potom, co doplní svou otázku, si uvědomím, že je o ní rozhodnuto, aby rodila císařským řezem a vybírá termín.
Hynek Dařbujan
Armáda Evropské unie
Dne 6. 3. jsem byl v Evropském domě, který je na Národní třídě v Praze, na semináři "Jak se dostat do armády Evropské unie". Chtěl bych se tímto s vámi podělit o zážitky.
Hynek Dařbujan
Problém s instalací Skype na linuxu [vyřešeno]
Většina distribucí založená na linuxu je i bez znalosti příkazové řádky (tzv. terminálu) použitelná jako bezplatná alternativa komerčních operačních systémů. Jestli něco může od změny odradit, je několik pro "běžného smrtelníka" neřešitelných problémů, které vyžadují větší znalosti systémů založených na linuxu. Tady je jeden z nich.
Hynek Dařbujan
Havel byl taky umělec a docela to s ním šlo, ne?
Jsme malý národ, ale věřím, že se správnými vůdci to dokážeme ostatním pořádně zavařit. Kdo se toho má bát? My, nebo oni?
Další články autora |
Nahá umělkyně za zvuků techna házela před dětmi hlínou. Už to řeší policie
Policie prošetřuje vystoupení, ke kterému došlo na Akademii výtvarných umění (AVU). Umělkyně a...
Stovky amerických obrněnců se v řádu dnů nepozorovaně přemístily do Česka
Několik set vozidel americké armády včetně obrněnců Bradley nebo transportérů M113 se objevilo ve...
Německo je otřeseno. Přišel brutální útok na politika, pak následoval další
Na lídra kandidátky německé sociální demokracie (SPD) v Sasku do evropských voleb Matthiase Eckeho...
Vyváděla strašné věci. Zahradil označil Jourovou za nejhorší z eurokomisařů
Premium Když Česko vstoupilo 1. května do Evropské unie, byl tam matador ODS Jan Zahradil kooptován...
Auto vyjelo z vozovky a srazilo tři lidi. Žena zemřela, dvě vnučky jsou zraněné
Osobní auto srazilo dnes odpoledne v Čáslavicích na Třebíčsku ženu a dvě děti. Žena srážku...
Ani vás nepustí do haly. Podvodů při prodeji lístků na MS v hokeji přibývá
Organizátoři i policie varují: Kupovat vstupenky na mistrovství světa v hokeji od někoho jiného než...
Katar plánuje vyhoštění lídrů Hamásu, ale není kam. Jordánsko je zpět nechce
Premium Katar je místo, kde si lídři teroristické organizace Hamás léta užívali pětihvězdičkového luxusu....
Za bydlení politiků platíme tisíce, vládní byty a vily mnozí z nich nevyužívají
Premium Stát jen za tento rok zaplatí za bydlení v Praze mimopražského ministra školství Mikuláše Beka...
Izrael zavřel hraniční přechod do Pásma Gazy. Humanitární pomoc tam končí
Izraelská armáda v neděli oznámila, že po ostřelování uzavírá hraniční přechod Kerem Šalom, určený...
Nespí vaše dítě? Přečtěte si, jak nespavost vyřešit
Nespavost a problémy se spánkem se v různé míře objevují až u 30 % dětí. Mohou se projevovat častým buzením, problémy s usínáním, brzkým vstáváním...
- Počet článků 35
- Celková karma 0
- Průměrná čtenost 1383x