Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Laboratório 1 ExercÃcio 2
- * Remoção de valores contidos em um intervalo(especificado por entrada do usuário)
- * de uma lista encadeada dinâmica
- * Programador: Diego Dillenburg Bueno Data: 20 de Março de 2014
- * Compilador: GCC 4.8.2 */
- #include <stdio.h>
- #include <stdlib.h>
- struct node {
- int info;
- struct node *next;
- };
- /* insere valores na lista encadeada dinâmica */
- int insertList(struct node *root){
- /* ponteiro para percorrer a lista */
- struct node *p;
- int i,
- valor;
- p = root;
- /* preenchendo a lista */
- for(i=0; i<10; i++){
- printf("%s%d%s\n", "Digite o ", i+1, "o valor da lista:");
- scanf("%d", &valor);
- p->info = valor;
- /* criando um novo nó no final da lista e alocando um valor */
- p->next = malloc(sizeof(struct node));
- p = p->next;
- p->next = 0;
- }
- p->next = 0;
- return 0;
- }
- /* imprime a lista */
- int printList(struct node *root){
- /* ponteiro para percorer a lista */
- struct node *p;
- p = root;
- int i = 0; // número do nó
- /* imprimindo a lista */
- if (p != 0)
- while(p->next != 0){
- printf("%s%d%s%d\n", "No: ", i, " Valor: ", p->info);
- p = p->next;
- i++;
- }
- return 0;
- }
- /* remove os nós cujo valor(info) estejam contidos em intervalo especificado pelo usuário(vI e vF, sendo vI<vF) */
- int removeNode(struct node *root, int vI, int vF){
- /* ponteiro para percorrer a lista */
- struct node *p;
- p = root;
- /* ponteiro auxiliar para remoção de dados da lista */
- struct node *pAux;
- while(p->next != 0){
- if(p->next->info >= vI && p->next->info <= vF){
- pAux = p->next;
- p->next = p->next->next;
- free(pAux);
- }
- else p = p->next;
- }
- return 0;
- }
- int main() {
- int vI,
- vF;
- /* inicializando a lista */
- struct node *root;
- root = malloc(sizeof(struct node));
- root->next = 0;
- insertList(root);
- printf("%s\n", "Lista inicial:");
- printList(root);
- printf("%s\n", "Por favor entre com um intervalo de dados a serem removidos da lista:");
- printf("%s", "Valor inicial: ");
- scanf("%d", &vI);
- printf("%s", "Valor final: ");
- scanf("%d", &vF);
- removeNode(root, vI, vF);
- printf("%s\n", "Lista final:");
- printList(root);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement