Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "le.h"
- #include <stdlib.h>
- struct llist * create_l(){
- struct llist * ptr;
- ptr = malloc(sizeof(struct llist));
- ptr->cabeca = NULL;
- ptr->tam = 0;
- return ptr;
- }
- elem * create_node(int val){
- elem * ptr;
- ptr = malloc(sizeof(elem));
- ptr->val = val;
- ptr->next = NULL;
- return ptr;
- }
- int insert_l(struct llist * desc, elem * prev, elem * item){
- //Adição no ínicio
- if(prev == NULL){
- if(desc->cabeca == NULL){
- desc->cabeca = item;
- desc->tam++;
- return 1;
- }
- item->next = desc->cabeca;
- desc->cabeca = item;
- desc->tam++;
- return 1;
- }
- item->next = prev->next;
- prev->next = item;
- desc->tam++;
- return 1;
- }
- int delete_l(struct llist * desc, elem * prev){
- elem * temp;
- if(prev == NULL){
- temp = desc->cabeca;
- desc->cabeca = temp->next;
- desc->tam--;
- free(temp);
- return 1;
- }
- temp = prev->next;
- prev->next = temp->next;
- desc->tam--;
- free(temp);
- return 1;
- }
- elem * get_l(struct llist * desc, int pos){
- int i;
- elem *ptr;
- if(pos > desc->tam || pos < 1)
- return NULL;
- if(pos == 1)
- return desc->cabeca;
- ptr = desc->cabeca;
- for(i = 0; i < pos; i++){
- ptr = ptr->next;
- }
- return ptr;
- }
- int set_l(struct llist * desc, int pos, int val){
- elem *ptr;
- ptr = get_l(desc, pos);
- if(ptr == NULL)
- return 0;
- ptr->val = val;
- return 1;
- }
- elem * locate_l(struct llist * desc, elem * prev, int val){
- elem *ptr;
- if(prev == NULL)
- ptr = desc->cabeca;
- else
- ptr = prev;
- while(ptr != NULL){
- if(ptr->val == val)
- return ptr;
- ptr = ptr->next;
- }
- return NULL;
- }
- int length_l(struct llist * desc){
- return desc->tam;
- }
- void destroy_l(struct llist * desc){
- int i;
- if(desc->cabeca == NULL)
- free(desc);
- else {
- for(i = 0; i < desc->tam; i++){
- delete_l(desc, NULL);
- }
- free(desc);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement