線性表的鏈式實現例子
#include <stdio.h> #include <stdlib.h> #include "ds.h" #define ElemType int //資料元素的類型 Status print(ElemType e); // 列印資料元素的方法 bool equal(ElemType a, ElemType b); //比較兩個元素相等的方法 #include "linklist.h" //列印鏈表內容 void PrintLinkList(LinkList L); int main() { LinkList L; //1)初始化鏈表 InitList(L); //2)插入一些元素: 12,23,34,45 ListInsert(L,1,12); ListInsert(L,1,23); ListInsert(L,1,34); ListInsert(L,1,45); //3)列印鏈表資訊 printf("\n開始時鏈表內容\n"); PrintLinkList(L); printf("ListLength(L) : %d\n", ListLength(L)); printf("ListEmpty(L) : %d\n", ListEmpty(L)); //4)鏈表插入 printf("\n請輸入一個元素:"); ElemType x; read(x); printf("插入開頭:"); ListInsert(L,1,x); PrintLinkList(L); printf("插入末尾:"); ListInsert(L,ListLength(L)+1,x); PrintLinkList(L); //5)鏈表刪除 printf("\n請選擇刪除第i(1..%d)個元素:", ListLength(L)); int i; read(i); ElemType e; if ( ListDelete(L,i,e)==OK ) { Status print(ElemType e); //聲明print(e)函數 printf("刪除"); print(e); printf("成功\n"); } else printf("刪除失敗.\n"); printf("鏈表內容:"); PrintLinkList(L); //6)元素定位 printf("\n請輸入一個元素以便定位:"); read(x); i = LocateElem(L,x); if ( i!=0 ) { printf("該元素是表中的第%d個元素.\n",i); } else printf("該元素在表中不存在.\n"); //7)清空鏈表 ClearList(L); printf("\n最後鏈表內容\n"); PrintLinkList(L); printf("ListLength(L) : %d\n", ListLength(L)); printf("ListEmpty(L) : %d\n", ListEmpty(L)); //8)銷毀鏈表 DestroyList(L); system("PAUSE"); return 0; } // 列印資料元素的方法 Status print(ElemType e) { printf("%5d",e); return OK; } //比較兩個元素相等的方法 bool equal(ElemType a, ElemType b) { return a==b; } //列印鏈表內容 void PrintLinkList(LinkList L) { ListTraverse(L,print); //遍曆鏈表並print()每個元素 printf("\n"); }