codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> struct slist { int num; slist* next; }; bool slist_add(slist*& head, slist*& tail, int num); void slist_clear(slist*& head, slist*& tail); void slist_print(std::ostream& hout, const slist* p); //вставить после нечётного элемента void slist_insert(slist*& head, slist*& tail, int num){ slist* p; for(slist* i = head; i != NULL; i = i->next){ if(i->num % 2){ p = new (std::nothrow) slist(); if(p == NULL) break; p->num = num; p->next = NULL; if(i == tail){ tail->next = p; tail = p; break; } else { p->next = i->next; i->next = p; } } } } int main(void){ slist* head = NULL, *tail = NULL; int a[] = { 1, 3, 5, 7, 9, 8, 11, 512, 333 }; int i, n = sizeof(a)/sizeof(a[0]); for(i = 0; i < n; ++i) slist_add(head, tail, a[i]); slist_print(std::cout, head); int k = 0; for(const slist* p = head; p != NULL; p = p->next){ if(!(p->num % 2)) k = p->num; } slist_insert(head, tail, k); slist_print(std::cout, head); slist_clear(head, tail); return 0; } //вставка в конец списка bool slist_add(slist*& head, slist*& tail, int num){ slist* p = new (std::nothrow) slist(); if(p != NULL){ p->next = NULL; p->num = num; if(head == NULL) head = tail = p; else { tail->next = p; tail = p; } } return (p != NULL); } //удаление всего списка void slist_clear(slist*& head, slist*& tail){ slist* t; while(head != NULL){ t = head; head = head->next; delete t; } tail = NULL; } //печать списка void slist_print(std::ostream& _out, const slist* p){ for(; p != NULL; p = p->next) _out << p->num << ' '; _out << std::endl; }
Private
[
?
]
Run code
Submit