最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《計算機(jī)軟件基礎(chǔ)》實驗一

2022-12-25 13:19 作者:答案資料  | 我要投稿

實驗一:線性表/棧與隊

一、實驗?zāi)康?/span>

了解實現(xiàn)線性表/棧與隊/數(shù)組所涉及到的數(shù)據(jù)結(jié)構(gòu)。

二、實驗要求

因受時間限制,從以下給出的4個實驗內(nèi)容中任選3個,分析并補(bǔ)齊給出的源程序,運行相應(yīng)的程序,檢驗運行結(jié)果,以此鞏固對相應(yīng)部分的理論知識的理解。

1.復(fù)習(xí)線性表、棧與隊列的定義,理解順序存儲、鏈?zhǔn)酱鎯Φ姆椒盎静僮鳌?/span>

2.復(fù)習(xí)C語言中數(shù)組、指針及結(jié)構(gòu)體的概念、定義方式。

3.上機(jī)前準(zhǔn)備好全部源程序。

4.計算機(jī)中需要安裝vc6.0或vs2010。

5.程序中所用結(jié)構(gòu)體定義于datastru.h中。

三、實驗內(nèi)容

熟悉vs2010環(huán)境下建立程序源文件與調(diào)試程序的流程。

1、完成有序表(順序表)中插入一元素并保證仍然有序。

……(補(bǔ)充程序)

void main( )

{

SEQUENLIST ?L;

int num,i,k,x;

L.last=0; ??//置順序表為空,表長為0

printf("請輸入順序表元素,元素為整型量,用空格分開,-99為結(jié)束標(biāo)志:");

/*輸入順序表元素,建立有序表,值從小到大*/

scanf("%d",&num);

while (num !=-99) {

………(補(bǔ)充程序)

L.last++;

scanf("%d",&num);

}

printf("%d",L.last);

printf("輸入要插入的元素值(整型) : ");

scanf("%d",&num);

printf("\n插入前有序表元素列表 :");

for (i=0; i<L.last; i++)

?printf("%4d",L.datas[i]);

printf("\n");

k = L.last-1;

while ((k>= 0) && (num<L.datas[k])) /*查找插入位置i ?*/

k--;

for(i=L.last-1; i>=k+1; i--)

L.datas[i+1]=L.datas[i]; ?/*移動元素 ?*/

L.datas[k+1]=num; ????????????????????????????????????/*新元素插入*/

L.last++; ????????????????????????????????????????????/*表長加1 */

printf("\n插入后有序表元素列表 :");

for (i=0; i<L.last; i++)

?printf("%4d",L.datas[i]);

printf("\n");

}

?

2、完成鏈表的結(jié)點插入、刪除操作,并顯示操作前后的線性表中各元素的情況。

……(補(bǔ)充程序)

?

void inser_order(DATATYPE2 x, LINKLIST *head){

LINKLIST *pr, *pn, *pp;

pr = head; pn = head->next;

while(pn != NULL && pn->data < x)

{

……(補(bǔ)充程序)

}

pp = (LINKLIST *)malloc(sizeof(LINKLIST));

……(補(bǔ)充程序)

}

?

int count_head(LINKLIST *head)?????/*輸出單鏈表元素值并計數(shù)*/

{

int i = 0;

LINKLIST *p;

p = head->next;

printf("輸出單鏈表元素值 : ");

while(p != NULL)

{

……(補(bǔ)充程序)

}

printf("\n");

return i;

}

?

LINKLIST *creatlink_order_head(LINKLIST *head) ??/*建立帶頭結(jié)點的有序單鏈表*/

{

LINKLIST *t, *p, *q;

char ch;

t = (LINKLIST *)malloc(sizeof(LINKLIST)); ??//建立帶頭結(jié)點的空鏈表

t->next = NULL;

head = t;

printf("單鏈表元素值為單個字符, 連續(xù)輸入,#為結(jié)束字符 ?: ");

while ((ch = getchar()) != '#')

{

……(補(bǔ)充程序)

}

return head;

}

?

int main()

{

LINKLIST *head = NULL;

int ?num;

char ch;

printf("\n????建立單鏈表\n\n");

head = creatlink_order_head(head);

num = count_head(head);

printf("單鏈表元素個數(shù) = %d\n", num);

fflush(stdin);

printf("\n輸入插入元素值 : ");

ch = getchar();

inser_order(ch, head);

printf("\n ???元素插入后\n\n");

num = count_head(head);

printf("插入后單鏈表元素個數(shù) = %d\n", num);

return 1;

}

?

3、運用棧完成十進(jìn)制數(shù)與八進(jìn)制數(shù)的轉(zhuǎn)換。

……(補(bǔ)充程序)

void initstack(SEQSTACK *s) ??/*順序棧初始化*/

{

?……(補(bǔ)充程序)

}

?

DATATYPE1 gettop(SEQSTACK *s) /*返回棧頂元素*/

{

???DATATYPE1 ?x;

???……(補(bǔ)充程序)

???return x;

?}

?

int push(SEQSTACK ??*s, ?DATATYPE1 ?x) ?/*元素x入棧*/

{

??if(s->top == MAXSIZE-1)

??{

?……(補(bǔ)充程序)

??}

??else

??{

??……(補(bǔ)充程序)

??return 1;

??}

}

?

DATATYPE1 pop(SEQSTACK *s) ???/*返回棧頂元素并刪除棧頂元素*/

{

DATATYPE1 ?x;

if(s->top == 0)

{

printf("棧空\n");

x=0;

}

else

{

……(補(bǔ)充程序)

}

?

return ?x;

}

?

int main( )

{

SEQSTACK stack, *s;

int ?n;

s = &stack;

initstack(s);

n = 0;

printf("輸入一非負(fù)整數(shù)(十進(jìn)制) :");

scanf("%d",&n);

push(s,'#');

while(n != 0)

{

push(s, n % 8); ????????/* %為求余數(shù)運算符, 余數(shù)入棧*/

n = n / 8; ? ?/* /為求整數(shù)商運算符,商不為零,繼續(xù)運行*/

} ????????????

?

printf("\n\n對應(yīng)的八進(jìn)制數(shù)為 :");

while(gettop(s) != '#')

printf("%d",pop(s));

printf("\n");

?

return 1;

}

?

4、實現(xiàn)帶頭結(jié)點鏈隊元素的刪除、插入操作,并顯示操作前后的隊列情況。

……(補(bǔ)充程序)

DATATYPE1 dellinkqueue(LINKQUEUE *q) ???/*刪除隊頭元素并返回*/

{

……(補(bǔ)充程序)

if(q->front == q->rear)

{

printf("隊列空\n");

v = 0;

}

else

{

……(補(bǔ)充程序)

}

return v;

}

void enlinkqueue(LINKQUEUE *q, DATATYPE1 x) ?/*元素x 入隊列*/

{

(q->rear)->next = (LINKQLIST *)malloc(sizeof(LINKQLIST));

……(補(bǔ)充程序)

}

?

void initlinkqueue(LINKQUEUE *q) ?/*鏈隊列初始化*/

{

……(補(bǔ)充程序)

}

?

void outlinkqueue(LINKQUEUE *q) ????/*鏈隊列元素依次顯示*/

{

LINKQLIST *p;

p = q->front;

printf("隊列元素顯示 : ");

while(p != q->rear)

{

……(補(bǔ)充程序)

}

printf("\n");

}

?

int main()

{

LINKQUEUE lq, *p;

int j;


p = &lq;

initlinkqueue(p);

printf("輸入一整數(shù)(奇數(shù)——入隊列、偶數(shù)——刪除隊頭元素、0——退出) : ");

scanf("%d", &j);

while(j != 0) ???????????????????/*輸入 0——退出*/

{

if(j % 2 == 1) ?????????????

enlinkqueue(p,j); ???????????/*輸入奇數(shù)——入隊列*/

else

j = dellinkqueue(p); ?????????/*輸入偶數(shù)——刪除隊頭元素*/

outlinkqueue(p);

????printf("\n輸入一整數(shù)(奇數(shù)——入隊列、偶數(shù)——刪除隊頭元素、0——退出) : ");

????scanf("%d", &j); ????????????/*繼續(xù)輸入*/

}

?

return 1;

}

四、注意事項

注意程序中用到的結(jié)構(gòu)體的來源及表示方法、調(diào)用方式。讀懂程序結(jié)構(gòu),先補(bǔ)齊缺失代碼,再調(diào)試運行程序。

五、實驗總結(jié)和體會

?

?

?

?


《計算機(jī)軟件基礎(chǔ)》實驗一的評論 (共 條)

分享到微博請遵守國家法律
连南| 武冈市| 安仁县| 稻城县| 古蔺县| 遂平县| 凌云县| 宜黄县| 荣昌县| 金溪县| 布尔津县| 府谷县| 喜德县| 成安县| 库尔勒市| 宜宾县| 潍坊市| 海阳市| 苍溪县| 磴口县| 高密市| 贵定县| 固安县| 漳平市| 沐川县| 福海县| 河津市| 大安市| 陇南市| 达州市| 凤凰县| 广灵县| 精河县| 肇源县| 白水县| 长兴县| 岑溪市| 惠东县| 原平市| 温宿县| 东莞市|