國立屏東大學 資訊工程學系 程式設計(二)

作業17

turnin code c.hw17

due date: June 17, 13:30

* 延續上次的作業16

* 本次作業要turnin三個檔案

  1. stringLL.h –> 可以存放字串的Linked List資料結構的宣告定義
  2. stringLL.c –> 可以存放字串的Linked List資料結構的實作
  3. stringLLBox.c –> 用以接受使用者命令,以新增字串、列示字串、搜尋字串、刪除字串、清空所有字串等功能的主程式,其中關於字串的操作,必須要呼叫stringLL.c及stringLL.h所實作及定義的函式來完成

* 如果你設計remove()函式時,遇到函式名稱重複定義的問題,可以將revmoe()改名為removeElement()或其它你喜歡的名稱

使用Linked List來存放不定個數,長度亦不限定的新版本stringBox。請將LinkedList相關的宣告寫在stringLL.h中,實作寫在stringLL.c中,並以一含有main function的主程式stringLLBox.c完成以下功能。注意:關於Linked List部份依課堂講解的功能為主,但你必須將原本可儲存整數的功能,改成字串(其長度不固定)。在你的程式中,必須宣告一個指標永遠指向目前字元數最長的字串,如果一樣時,則列出最後加入的字串。程式執行時,可接受使用者命令進行相關操作,包含:

  1. l 列示目前已有的字串
  2. i 新增字串(字串中不會有空白字元),請以呼叫addLast()完成。
  3. m 列示字元數最多的字串(若字元數相同時,則列出最後新增的字串)
  4. s 搜尋字串是否存在。讓使用者輸入一個欲尋找的字串,並以search()完成,若找到符合的字串則顯示「found」,若找不到則顯示「none」
  5. d 刪除字串,此部份修改為讓使用者輸入欲刪除的字串,再搜尋Linked List找出該字串所在之後將之刪除(若有一個以上符合則全部加以刪除)。你應該使用remove()完成,若找到並刪除符合的字串則顯示「deleted」,若找不到則顯示「none」。注意,remove()只會刪除一筆,若有多筆要繼續呼叫才行。
  6. e 清空整個盒子
  7. q 結束程式的執行

程式執行結果參考:

[9:19 user@ws hw17] ./a.out
[command] l
-empty-
[command] m
-null-
[command] q
-bye-
[9:19 user@ws hw17] ./a.out
[command] l
-empty-
[command] i
string=? Happy
[command] l
Happy-->end
[command] i
string=? birthday
[command] i
string=? to
[command] i
string=? someOneWithAVeryVeryLongName
[command] l
Happy-->birthday-->to-->someOneWithAVeryVeryLongName-->end
[command] m
The string with maximum length is someOneWithAVeryVeryLongName.
[command] s
string=? to
found
[command] s
string=? XXX
none
[command] d
string=? someOneWithAVeryVeryLongName
deleted
[command] l
Happy-->birthday-->to-->end
[command] i
string=? You
[command] l
Happy-->birthday-->to-->You-->end
[command] i
string=? You
[command] l
Happy-->birthday-->to-->You-->You-->end
[command] d
string=? You
deleted
[command] l
Happy-->birthday-->to-->end
[command] i
string=? You
[command] l
Happy-->birthday-->to-->You-->end
 
[command] e
[command] l
-empty-
[command] q
-bye-
[9:19 user@ws hw17]