Advertisement
Guest User

Untitled

a guest
May 27th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. struct t_node {
  2. struct t_node *next;
  3. int value;
  4. } t_node;
  5.  
  6. struct t_list {
  7. t_node *head;
  8. t_node *tail;
  9. int size;
  10. } t_list;
  11.  
  12. void insert_node(t_list *list, t_node *node, t_node *new_node) {
  13. if (list->size == 0) {
  14. // list is empty
  15. list->head = new_node;
  16. list->tail = new_node;
  17. list->size = 1;
  18. } else {
  19. if (node == 0) {
  20. // put the new node at the beginning
  21. new_node->next = list->head;
  22. list->head = new_node;
  23. list->size++;
  24. } else {
  25. // insert the new node right after the node
  26. new_node->next = node->next;
  27. node->next = new_node;
  28. if (list->tail == node) {
  29. // we want to insert after the tail
  30. list->tail = new_node;
  31. list->size++;
  32. }
  33. }
  34. }
  35. }
  36.  
  37. void delete_node(t_list *list, t_node *dnode) {
  38. t_node *node_ptr;
  39. if (list->size == 1) {
  40. list->head = 0;
  41. list->tail = 0;
  42. list->size = 0;
  43.  
  44. } else {
  45. if (list->head == dnode) {
  46. // we want to delete the head of our list
  47. list->head = dnode->next;
  48. list->size--;
  49.  
  50. } else {
  51. node_ptr = list->head;
  52. while(node_ptr != 0) {
  53. if (node_ptr->next == dnode) {
  54. if(dnode == list->tail) {
  55. list->tail = node_ptr;
  56. }
  57. node_ptr->next = dnode->next;
  58. list->size--;
  59.  
  60. return;
  61. }
  62. node_ptr = node_ptr->next;
  63. }
  64. }
  65. }
  66. }
  67.  
  68. int main() {
  69. t_list list = {0,0,0};
  70. t_node node = {0, 20};
  71. insert_node(&list, 0, &node);
  72. printlist(&list);
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement