#ifndef ___LINKED_LIST_H___ #define ___LINKED_LIST_H___ #include typedef struct LINKED_LIST_NODE_s *LINKED_LIST_NODE; typedef struct LINKED_LIST_NODE_s { LINKED_LIST_NODE next; void *data; } LINKED_LIST_NODE_t[1]; typedef struct LINKED_LIST_s *LINKED_LIST; typedef struct LINKED_LIST_s { LINKED_LIST_NODE head; } LINKED_LIST_t[1]; //IMPLEMENT THESE FUNCTIONS LINKED_LIST linked_list_init(); void linked_list_free(LINKED_LIST list); int linked_list_prepend(LINKED_LIST list, void *data); int linked_list_append(LINKED_LIST list, void *data); int linked_list_insert(LINKED_LIST list, void *data, int idx); void *linked_list_set(LINKED_LIST list, void *data, int idx); void *linked_list_get(LINKED_LIST list, int idx); void *linked_list_remove(LINKED_LIST list, int idx); void linked_list_removeall(LINKED_LIST list); void linked_list_concatenate(LINKED_LIST list, LINKED_LIST list2); LINKED_LIST linked_list_init() { LINKED_LIST list; list = (LINKED_LIST)malloc(sizeof(LINKED_LIST_t)); if(list != NULL) { list->head = NULL; } return list; } void linked_list_free(LINKED_LIST list) { free(list); } int linked_list_prepend(LINKED_LIST list, void *data) { LINKED_LIST_NODE n; int z; z = 0; n = (LINKED_LIST_NODE)malloc(sizeof(LINKED_LIST_NODE_t)); if(n != NULL) { n->data = data; n->next = list->head; list->head = n; z = 1; } return z; } /* for nonnullable lists */ void *linked_list_set(LINKED_LIST list, void *data, int idx) { LINKED_LIST_NODE walker, tmp; void *olddata; int i; olddata = NULL; if(idx == 0 && list->head != NULL) { tmp = list->head; olddata = tmp->data; tmp->data = data; } else { walker = list->head; idx--; for(i=0; inext!=NULL; i++) { walker = walker->next; } if(walker != NULL && walker->next != NULL) { tmp = walker->next; olddata = tmp->data; tmp->data = data; } } return olddata; } /* for nonnullable lists */ void *linked_list_remove(LINKED_LIST list, int idx) { LINKED_LIST_NODE walker, tmp; void *data; int i; data = NULL; if(idx == 0 && list->head != NULL) { tmp = list->head; list->head = tmp->next; data = tmp->data; free(tmp); } else { walker = list->head; idx--; for(i=0; inext!=NULL; i++) { walker = walker->next; } if(walker != NULL && walker->next != NULL) { tmp = walker->next; walker->next = tmp->next; data = tmp->data; free(tmp); } } return data; } #endif

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

#ifndef ___LINKED_LIST_H___
#define ___LINKED_LIST_H___

#include<stdlib.h>


typedef struct LINKED_LIST_NODE_s *LINKED_LIST_NODE;
typedef struct LINKED_LIST_NODE_s {
LINKED_LIST_NODE next;
void *data;
} LINKED_LIST_NODE_t[1];

typedef struct LINKED_LIST_s *LINKED_LIST;
typedef struct LINKED_LIST_s {
LINKED_LIST_NODE head;
} LINKED_LIST_t[1];

//IMPLEMENT THESE FUNCTIONS
LINKED_LIST linked_list_init();
void linked_list_free(LINKED_LIST list);
int linked_list_prepend(LINKED_LIST list, void *data);
int linked_list_append(LINKED_LIST list, void *data);
int linked_list_insert(LINKED_LIST list, void *data, int idx);
void *linked_list_set(LINKED_LIST list, void *data, int idx);
void *linked_list_get(LINKED_LIST list, int idx);
void *linked_list_remove(LINKED_LIST list, int idx);
void linked_list_removeall(LINKED_LIST list);
void linked_list_concatenate(LINKED_LIST list, LINKED_LIST list2);

LINKED_LIST linked_list_init()
{
LINKED_LIST list;
list = (LINKED_LIST)malloc(sizeof(LINKED_LIST_t));
if(list != NULL) {
list->head = NULL;
}
return list;
}

void linked_list_free(LINKED_LIST list)
{
free(list);
}

int linked_list_prepend(LINKED_LIST list, void *data)
{
LINKED_LIST_NODE n;
int z;
z = 0;
n = (LINKED_LIST_NODE)malloc(sizeof(LINKED_LIST_NODE_t));
if(n != NULL) {
n->data = data;
n->next = list->head;
list->head = n;
z = 1;
}
return z;
}

/* for nonnullable lists */
void *linked_list_set(LINKED_LIST list, void *data, int idx)
{
LINKED_LIST_NODE walker, tmp;
void *olddata;
int i;
olddata = NULL;
if(idx == 0 && list->head != NULL) {
tmp = list->head;
olddata = tmp->data;
tmp->data = data;
}
else {
walker = list->head;
idx--;
for(i=0; i<idx && walker->next!=NULL; i++) {
walker = walker->next;
}
if(walker != NULL && walker->next != NULL) {
tmp = walker->next;
olddata = tmp->data;
tmp->data = data;
}
}
return olddata;
}

/* for nonnullable lists */
void *linked_list_remove(LINKED_LIST list, int idx)
{
LINKED_LIST_NODE walker, tmp;
void *data;
int i;
data = NULL;
if(idx == 0 && list->head != NULL) {
tmp = list->head;
list->head = tmp->next;
data = tmp->data;
free(tmp);
}
else {
walker = list->head;
idx--;
for(i=0; i<idx && walker->next!=NULL; i++) {
walker = walker->next;
}
if(walker != NULL && walker->next != NULL) {
tmp = walker->next;
walker->next = tmp->next;
data = tmp->data;
free(tmp);
}
}
return data;
}

#endif

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY