Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- static unsigned int count = 0;
- typedef struct List{
- int data;
- struct List* next;
- struct List* prev;
- }Node;
- void creatNode(Node* head, int data)
- {
- count++;
- while(head->next != NULL)
- head = head->next;
- Node* cur = (Node*) malloc(sizeof(Node));
- cur->data = data;
- head->next = cur;
- cur->prev = head;
- cur->next = NULL;
- }
- void printListForward(Node *head)
- {
- // for (int i = 0; i < count; i++){
- // printf("%d ", head->data);
- // head = head->next;
- // }
- // printf("\n");
- while (head != NULL){
- printf("%d ", head->data);
- head = head->next;
- }
- printf("\n");
- }
- void printListBackward(Node *head)
- {
- while(head->next != NULL)
- head = head->next;
- // for (int i = count; i > 0; i--)
- // {
- // printf("%d ", head->data);
- // head = head->prev;
- // }
- while(head != NULL)
- {
- printf("%d ", head->data);
- head = head->prev;
- }
- printf("\n");
- }
- void pushForward(Node* head, int data)
- {
- count++;
- while(head->next != NULL){
- head = head->next;
- }
- Node* new = (Node*) malloc (sizeof(Node));
- new->data = data;
- head->next = new;
- new->next = NULL;
- new->prev = head;
- }
- // void anotherPrint(Node* head){
- // for (int i = 0; i < count; i++)
- // {
- // printf("%d ", head->data);
- // head = head->next;
- // }
- // printf("\n");
- // }
- void pushBack(Node* head, int data)
- {
- count++;
- Node* new = (Node*) malloc (sizeof(Node));
- Node* tmp = (Node*) malloc (sizeof(Node));
- *tmp = *head;
- // head->prev = head;
- new->next = new;
- new->prev = NULL;
- new->data = data;
- *head = *new;
- *new = *tmp;
- tmp->next->prev = new;
- new->prev = head;
- // new->data = data;
- // new->prev = NULL;
- // new->next = head;
- // head->prev = new;
- // *head = *new;
- // *new = *tmp;
- // *head = *new;
- // *new = *tmp;
- // head->prev = NULL;
- // head->next = new;
- // head->data = data;
- // new->data = tmp->data;
- // new->next = tmp->next;
- // new->prev = head;
- // tmp->next->prev = new;
- }
- void insertElemInd(Node* head, int data, int index)
- {
- // count++;
- Node* cur = (Node*) malloc (sizeof(Node));
- cur->data = data;
- for (int i = 1; i < index; i++)
- head = head->next;
- Node* tmp = (Node*) malloc(sizeof(Node));
- *tmp = *head;
- head->next = cur;
- cur->next = tmp->next;
- cur->prev = head;
- tmp->next->prev = cur;
- free(tmp);
- count++;
- }
- void insertElem(Node* head, int data, int afterData)
- {
- count++;
- Node* cur = (Node*) malloc (sizeof(Node));
- cur->data = data;
- while(head->data != afterData)
- head = head->next;
- Node* tmp = (Node*) malloc (sizeof(Node));
- *tmp = *head;
- head->next = cur;
- cur->next = tmp->next;
- tmp->next->prev = cur;
- cur->prev = head;
- free(tmp);
- }
- void deleteElem(Node* head, int elem)
- {
- while (head != NULL)
- {
- if (head->data == elem)
- {
- if (head->prev != NULL && head->next == NULL){
- head->prev->next = NULL;
- count--;
- // free(head);
- return;
- }
- else if(head->prev != NULL){
- head->prev->next = head->next;
- head->next->prev = head->prev;
- count--;
- // free(head);
- return;
- }
- else
- {
- // head->next->prev = NULL;
- Node* tmp = head;
- tmp = tmp->next;
- // tmp->prev->data = 155;
- // tmp->data = 1222;
- tmp->prev = NULL;
- // printf("head %p\n", head);
- // printf("tmp %p\n", tmp);
- *head = *tmp;
- count--;
- return;
- }
- }
- head = head->next;
- }
- printf("No one elem found!\n");
- }
- // void qw(char* str){
- // printf("%p\n", str);
- // while (*(str++))
- // printf("%c", *str);
- // printf("%p\n", str);
- // }
- int main()
- {
- Node* head = (Node*) malloc (sizeof(Node));
- count++;
- head->prev = NULL;
- head->data = 10;
- puts("1");
- creatNode(head, 20);
- puts("2");
- creatNode(head, 30);
- puts("3");
- creatNode(head, 40);
- printf("%p\n", head);
- printListForward(head);
- printf("%p\n", head);
- // char* strr = (char*) malloc (50 * sizeof(char));
- // fgets(strr, 50, stdin);
- // strr[strlen(strr) -1] = '\0';
- // printf("%p\n", strr);
- // qw(strr);
- // printf("%p\n", strr);
- printListBackward(head);
- pushForward(head, 50);
- printListForward(head);
- printListBackward(head);
- pushBack(head, 5);
- printListForward(head);
- printListBackward(head);
- puts("!");
- insertElemInd(head, 24, 2);
- printListForward(head);
- printListBackward(head);
- puts("!");
- insertElem(head, 44, 40);
- printListForward(head);
- printListBackward(head);
- puts("!");
- // printf("%p\n", head);
- deleteElem(head, 5);
- // printf("%p\n", head);
- printListForward(head);
- printListBackward(head);
- puts("!");
- // printListBackward(head);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement