一、實驗目的
本實驗是佇列的一種典型的應用,佇列是一種「先到先服務」的特殊的線性表,本實驗要求模擬手機簡訊功能,使用鏈式儲存結構的佇列,進行動態地增加和刪除結點資訊。
通過本實驗的學習,可以理解佇列的基本操作的實現。
二、實驗內容
設計程式要求,模擬手機的某些簡訊息功能。
功能要求:
(1)接受簡訊息,若超過儲存容量(如最多可儲存20條),則自動將最早接受的資訊刪除。
(2)顯示其中任意一條簡訊息。
(3)逐條顯示簡訊息。
(4)刪除其中的任意一條簡訊息。
(5)清除。
三、程式分析
採用結構體指標定義儲存簡訊結點:
typedef struct qnode
qnodetype; /定義佇列的結點/
定義佇列:
typedef struct
lqueue;
(1)int initlqueue(lqueue **q) 初始化簡訊佇列。
(2)int linqueue(lqueue *q,char x) 入佇列,將字串x加入到佇列尾部。
(3)char * loutqueue(lqueue *q) 出佇列,刪除隊頭元素,返回其中的字串。
(4)void get(lqueue *q,char x) 接收短數,若簡訊數量超過20條,則刪除隊頭簡訊。
(5)void deleteall(lqueue *q) 清除所有簡訊。
(6)void deleteone(lqueue *q,int n) 刪除第n條簡訊。
(7)void displayall(lqueue *q) 顯示所有簡訊。
(8)void displayone(lqueue *q,int n) 顯示第n條簡訊。
在main()函式中,採用選單方式,選單中同時顯示出已有的簡訊數量,由使用者選擇輸入命令,實現程式要求功能,命令說明:
r®:接收簡訊
l(l):顯示任意一條簡訊
a(a):顯示所有簡訊
d(d):刪除任意一條簡訊
u(u):刪除所有簡訊
q(q):退出
四、程式源**
#include
#include
#include
#define maxmessage 50
#define len 20
#define true 1
/* the storage structure of chain of the queue --by jelly*/
//information node
typedef
struct qnodeqnodetype;
//define queue
typedef
struct
queue;
//initialization
intinitqueue
(queue *
*q)//in queue
intinqueue
(queue *q,
char x)
//out queue
char
*outqueue
(queue *q)
//get information
void
get(queue *q,
char x)
else
}//delete one decided information
void
clearone
(queue *q,
int num)
else
}else
else}}
}else
printf
("error:no this message\n");
(q->number)--;
//exit(0);
}//delete all
void
clearall
(queue *q)
}//display one decided information
void
displayone
(queue *q,
int num)
else}}
//display all the informations
void
displayall
(queue *q)}//
intmain()
if(command==
'q'||command==
'q')
break;}
return0;
}
# define maxnum 70
# define false 0
# define true 1
#include
"stdio.h"
#include
"stdlib.h"
#include
"string.h"
typedef
struct qnode
qnodetype;
/*定義佇列的結點*/
typedef
struct
lqueue;
intinitlqueue
(lqueue *
*q)int
linqueue
(lqueue *q,
char x)
char
*loutqueue
(lqueue *q)
void
get(lqueue *q,
char x)
linqueue
(q,x)
;q->number++;}
void
deleteall
(lqueue *q)
void
deleteone
(lqueue *q,
int n)
s=p->front->next;
p->front->next=p->front->next->next;
free
(s);
q->number--;}
void
displayall
(lqueue *q)
printf
("\n");
}void
displayone
(lqueue *q,
int n)
s=p->front->next;
printf
("%s\n"
,s->data);}
void
main()
if(command==
'q'||command==
'q')
break;}
}
五、實驗結果
最後程式執行結果如下所示:
get information(0),please enter r
display one information(0),please enter l
display all information(0),please enter a
delete one information(0),please enter d
delete all information(0),please enter u
quit,please enter q
please input command: ri like c++↙《回車》
get information(1),please enter r
display one information(1),please enter l
display all information(1),please enter a
delete one information(1),please enter d
delete all information(1),please enter u
quit,please enter q
please input command
Android 簡訊應用 簡訊傳送2
之前,有一片關於簡訊傳送的文章,不過那篇文章所提到的方法,是不會把簡訊存放到發件箱中的。介於有些時候需要存入,那麼我把相關的 寫出來 只要把這幾句加入方法中,再加上需要的許可權,那麼簡訊發出去後,發件箱就有所發簡訊內容了。如下 contentvalues values new contentvalu...
Android 簡訊應用 簡訊(會話)刪除
用過android系統手機的朋友們相比都知道,androidos的簡訊和ios一樣,是以會話模式展現的,這種展現方式很容易讓使用者查詢以前的聊天記錄。關於用 刪除簡訊,其實刪除的也是對話,無論是最近的,還是以前的,統統都會一併刪除。下面來看那 首先需要得到得到簡訊目錄。contentresolver...
AcWing 模擬佇列 佇列 模擬
時 空限制 1s 64mb 實現乙個佇列,佇列初始為空,支援四種操作 1 push x 向隊尾插入乙個數x 2 pop 從隊頭彈出乙個數 3 empty 判斷佇列是否為空 4 query 查詢隊頭元素。現在要對佇列進行m個操作,其中的每個操作3和操作4都要輸出相應的結果。第一行包含整數m,表示操作次...