Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Сформировать список.
- Найти первый и последний нули, удалить узлы между ними.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <string.h>
- struct Node
- {
- int num;
- Node *next;
- };
- Node *add_to_list(Node *lnode, int num)
- {
- Node *newel = new Node, *l = lnode;
- newel->num = num;
- newel->next = NULL;
- if(!lnode)
- return newel;
- while(l->next)
- l = l->next;
- l->next = newel;
- return lnode;
- }
- void del_list(Node *lnode)
- {
- Node *p_s = lnode;
- Node *p_tmp = p_s;
- while(p_s)
- {
- p_s = p_s->next;
- delete p_tmp;
- p_tmp = p_s;
- }
- }
- char* list_to_str(Node *l)
- {
- char buf[256];
- char *str = new char[256];
- str[0] = '\0';
- for(; l; l = l->next)
- {
- itoa(l->num, buf, 10);
- str = strcat(str, strcat(buf, " "));
- }
- return str;
- }
- int main()
- {
- int n, buff;
- srand(time(0));
- Node *z1 = NULL;
- Node *z2 = NULL;
- Node *lnode_i;
- Node *buff1;
- Node *buff2;
- Node *lnode = NULL;
- printf("N: ");
- scanf("%d", &n);
- for(int i=0; i<n; ++i)
- {
- buff=rand()%10;
- lnode=add_to_list(lnode, buff);
- }
- printf("Input: %s\n", list_to_str(lnode));
- lnode_i = lnode;
- while(lnode_i)
- {
- if(lnode_i->num==0 && z1==NULL)
- z1=lnode_i;
- else if(lnode_i->num == 0 && z1 != NULL)
- z2=lnode_i;
- lnode_i=lnode_i->next;
- }
- if(z1 != NULL && z2 != NULL)
- {
- buff1 = z1->next;
- buff2 = buff1;
- while(buff1 != z2)
- {
- buff2 = buff1->next;
- delete buff1;
- buff1 = buff2;
- }
- z1->next = z2;
- }
- printf("Out: %s\n", list_to_str(lnode));
- del_list(lnode);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment