Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- typedef struct ListElement {
- int Value;
- struct ListElement* NextElement;
- } ListElement;
- typedef struct List{
- ListElement* Head;
- } List;
- void PrintValues(List list) {
- ListElement* p = list.Head;
- while (p != NULL) {
- printf("%d ", p->Value);
- p = p->NextElement;
- }
- printf("\n");
- }
- void PushFront(List* list, int value) {
- ListElement* p = (ListElement*)malloc(sizeof(ListElement));
- p->Value = value;
- p->NextElement = list->Head;
- list->Head = p;
- }
- void PopFront(List* list) {
- if (list->Head != NULL) {
- ListElement* p = list->Head;
- list->Head = p->NextElement;
- free(p);
- }
- }
- void PushBack(List* list, int value) {
- ListElement* newElement = (ListElement*)malloc(sizeof(ListElement));
- ListElement* lastElement = list->Head;
- while (lastElement->NextElement != NULL)
- lastElement = lastElement->NextElement;
- lastElement->NextElement = newElement;
- newElement->Value = value;
- newElement->NextElement = NULL;
- }
- void PopBack(List* list) {
- if (list->Head != NULL) {
- ListElement* lastElement = list->Head;
- ListElement* beforeLastElement = NULL;
- while (lastElement->NextElement != NULL) {
- beforeLastElement = lastElement;
- lastElement = lastElement->NextElement;
- }
- beforeLastElement->NextElement = NULL;
- free(lastElement);
- }
- }
- void PutInto(List* list, int place, int value) {
- ListElement* p = list->Head;
- ListElement* newElement = (ListElement*)malloc(sizeof(ListElement));
- for (int i = 0; i < place-2; i++)
- p = p->NextElement;
- newElement->NextElement = p->NextElement;
- p->NextElement = newElement;
- newElement->Value = value;
- }
- void PopFrom(List* list, int place) { //Ez valamiért nem működik pl 3 ra
- ListElement* p1 = list->Head;
- for (int i = 0; i < place - 2; i++)
- p1 = p1->NextElement;
- ListElement* p2 = p1->NextElement;
- p1->NextElement = p2->NextElement;
- free(p2);
- }
- void Dispose(List* list) { //Valamiért ő se szeretne működni
- while (list->Head != NULL)
- PopFront(list);
- }
- int main() {
- ListElement l1 = { 1, NULL };
- ListElement l2 = { 2, &l1 };
- ListElement l3 = { 3, &l2 };
- List Ferenc;
- Ferenc.Head = &l3;
- //Teszt
- PrintValues(Ferenc);
- //Adjunk az elejére egy 5 öst
- PushFront(&Ferenc, 5);
- PrintValues(Ferenc);
- //Vegyük vissza az 5-öst az elejéről
- PopFront(&Ferenc);
- PrintValues(Ferenc);
- //Adjunk a végére egy 5 öst
- PushBack(&Ferenc, 5);
- PrintValues(Ferenc);
- //Vegyük vissza az 5-öst a végéről
- PopBack(&Ferenc);
- PrintValues(Ferenc);
- //Rakjunk a 2. helyre egy 5-öst
- PutInto(&Ferenc, 2, 5);
- PrintValues(Ferenc);
- //Vegyük el a 2.helyre rakott 5-öst EZ NEM MŰKÖDIK
- /*PopFrom(&Ferenc, 3);
- PrintValues(Ferenc);*/
- //Mostmár kösz elég lesz a Feriből
- //Dispose(&Ferenc); MÉGSEM ELÉG BELŐLE :(
- /*
- OUTPUT:
- 3 2 1
- 5 3 2 1
- 3 2 1
- 3 2 1 5
- 3 2 1
- 3 5 2 1
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement