linked list operations

11
Linked List Operations Dr. David Tsai 2010/4

Upload: starbuck

Post on 05-Jan-2016

34 views

Category:

Documents


1 download

DESCRIPTION

Linked List Operations. Dr. David Tsai 2010/4. struct Node { int data; struct Node *next; }; typedef struct Node LNode; typedef LNode *List; List first = NULL; extern void creatList(int len, int *array); extern int isListEmpty(); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linked List Operations

Linked List Operations

Dr. David Tsai2010/4

Page 2: Linked List Operations

struct Node { int data; struct Node *next; };typedef struct Node LNode; typedef LNode *List; List first = NULL;

extern void creatList(int len, int *array);extern int isListEmpty();extern void printList();extern List searchNode(int d);extern int deleteNode(List ptr);extern void insertNode(List ptr, int d);

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 3: Linked List Operations

struct Node { int data; struct Node *next; };typedef struct Node LNode; typedef LNode *List; List first = NULL;

Typedef struct Node { int data; struct Node *next; }Lnode;typedef LNode *List; List first = NULL;

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 4: Linked List Operations

void createList (int len, int*array) {List newnode; for (int i = 0; i < len; i++) { newnode = (List) malloc (sizeof(LNode)); newnode->data = array[i]; newnode->next = first; first = newnode; }}

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 5: Linked List Operations

void printList () { List current = first; while (current ! = NULL) { printf ([ % d] , current->data); current = current->next; } printf (﹨n );}

int isListEmpty () { if (first == NULL) return 1; else return 0;}

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 6: Linked List Operations

int isListEmpty () { if (first == NULL) return 1; else return 0;}void printList () { if (isListEmpty()) { printf(“The Linked List is Empty\n”); return 0; } List current = first; while (current ! = NULL) { printf ([ % d] , current->data); current = current->next; } printf (﹨n );}

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 7: Linked List Operations

List searchNode (int d) { if (!isListEmpty()) { List current = first; while (current ! = NULL) { if (current->data == d) return current; current = current->next; } return NULL; } else { printf(“The Linked List is Empty\n”); return 0; } }

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 8: Linked List Operations

int deleteNode (List ptr) { List current = first; int value = ptr->data; if (isListEmpty() ) { return -1; } if (ptr==first∥ ptr==NULL) { first = first->next; } else { while (current->next!=ptr){ current = current->next; } if (ptr->next == NULL){ current->next = NULL; } else { current->next = ptr->next; } } free (ptr); return value; }

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 9: Linked List Operations

void insertNode (List ptr, int d) { List newnode; newnode = (List) malloc

(sizeof(LNode)); newnode->data = d; newnode->next = NULL; if (ptr == NULL) { newnode->next = first; first = newnode; } else { if (ptr->next == NULL) { ptr->next = newnode; } else { newnode->next=ptr->next; ptr->next = newnode; } }}

{ newnode->next=ptr->next; ptr->next = newnode; }

修改自教科書:資料結構理論與實務以 C語言實作 /陳會安

Page 10: Linked List Operations

List searchNode (int d) { if (!isListEmpty()) { List current = first; while (current ! = NULL) { if (current->data == d) return current; current = current->next; } return NULL; } else { printf(“The Linked List is Empty\n”); return 0; } }

void insertNode (List ptr, int d) { List newnode; newnode = (List) malloc (sizeof(LNode)); newnode->data = d; if (ptr == NULL) { newnode->next = first; first = newnode; } else { if (ptr->next == NULL) { ptr->next = newnode; newnode->next = NULL; } else { newnode->next=ptr->next; ptr->next = newnode; } } }

int main() { int temp; int data[6]={ 1, 2, 3, 4, 5, 6 }; List ptr; createList(6, data); printList(); temp = 0; insertNode(NULL, 50); printList(); while ( temp != -1 ) { scanf("%d", &temp); if ( temp != -1 ) { ptr = searchNode(temp); if ( ptr != NULL ) scanf("%d", &temp); insertNode(ptr, temp); printf("插入後串列 : "); printList(); } } system("PAUSE"); return 0; }

Page 11: Linked List Operations

6 5 3 2

firstptr ptr

=

ptr

50

newnode 4

newnode

1

newnode

完成分別在 (1)串列首之前、 (2)串列之間、 (3)串列之後插入節點