國立屏東大學 資訊工程學系 程式設計(二)
鏈結串列的實作
turnin code c.hw16
due date: April 22, 23:59
練習使用鏈結串列的實作
參考下面的Makefile
main: linkedlist.o main.c cc main.c linkedlist.o -o main linkedlist.o: linkedlist.c linkedlist.h cc -c linkedlist.c clean: rm -f *.*~ *~ *.o main
將鏈結串列的宣告置於linkedlist.h中
struct node { int value; struct node *next; }; typedef struct node Node; void showANode(Node *p); void showAllNodes(); Node *getFirst(); Node *getLast(); int getSize(); int isEmpty(); Node *createANode(int v); void addFirst(int v); void addLast(int v); void removeFirst(); void removeLast(); Node *search(int v); Node *removeANode(int v); int replace(int v, int newV);
main.c的內容如下:
#include <stdio.h> #include <stdlib.h> #include "linkedlist.h" int main() { Node *n; if(isEmpty()) { printf("Empty\n"); } showAllNodes(); printf("add 3\n"); addLast(3); printf("add 7\n"); addFirst(7); printf("add 5\n"); addLast(5); printf("add 6\n"); addFirst(6); printf("replace 3 by 9\n"); replace(3, 9); showAllNodes(); printf("The first data is "); showANode(getFirst()); printf("\n"); printf("The last data is "); showANode(getLast()); printf("\n"); printf("The number of data is %d\n", getSize()); printf("Is 7 in the linked list?\n"); n=search(7); if(n!=NULL) { printf("Yes.\n"); printf("The value next to 7 is "); n= n->next; showANode(n); } printf("\n"); return 0; }
請參考第19課的程式,完成linkedlist.c的實作。以make完成編譯後,執行./main可得到以下的結果:
[23:35 user@ws hw16]$ ./main Empty NULL add 3 add 7 add 5 add 6 replace 3 by 9 6-->7-->9-->5-->NULL The first data is 6 The last data is 5 The number of data is 4 Is 7 in the linked list? Yes. The value next to 7 is 9 [23:35 user@ws hw16]$
注意: