亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據結構中的線性表的初始化操作是什麼?

數據結構中的線性表的初始化操作是什麼?

喵喔喔 2018-11-28 09:01:38
數據結構中的線性表的初始化操作是什麼?
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

 初始化就是建立一個空線性表,那直接把長度置為0就行了。
  1 /* 初始化順序線性表 */
  2 Status InitList(SqList *L)
  3 {
  4 L->length=0;
  5 return OK;
  6 }
  因為要初始化,要對線性表本身進行操作,所以不能用值傳遞。值傳遞不會改變實參的值嘛。地址傳遞的話呢,實際上在函數內部執行了這么一個操作:L = &L. 所以操作函數內部的L,也就相當于操作外部的線性表L。其實地址傳遞也是值傳遞。不過這個值是地址而已。
  就是說,需要修改表的就傳指針,不需要修改表的傳值就行了。那補上一個完整的可運行的程序。
  01 #include "stdio.h"
  02
  03 #define OK 1
  04 #define ERROR 0
  05 #define TRUE 1
  06 #define FALSE 0
  07
  08 #define MAXSIZE 20 /* 存儲空間初始分配量 */
  09 typedef int ElemType; /* ElemType類型根據實際情況而定,這里假設為int */
  10 typedef int Status; /* Status是函數的類型,其值是函數結果狀態代碼,如OK等 */
  11
  12 typedef struct
  13 {
  14 ElemType data[MAXSIZE]; /* 數組,存儲數據元素 */
  15 int length; /* 線性表當前長度 */
  16 }SqList;
  17
  18 /* 初始化順序線性表 */
  19 Status InitList(SqList *L)
  20 {
  21 L->length=0;
  22 return OK;
  23 }
  24
  25 int main()
  26 {
  27 SqList L;
  28 ElemType e;
  29 Status i;
  30
  31 i=InitList(&L);
  32 printf("初始化L后:L.length=%d\n",L.length);
  33 }
  程序運行結果:
  1 初始化L后:L.length=0
  2
  3 Process returned 22 (0x16) execution time : 0.072 s
  4 Press any key to continue.
  有個問題,在函數內部 L->length=0; 使用箭頭,而在外面調用的時候 L.length 卻用實心點,兩者有啥區別嗎?
  這個很基礎嘛。。。在函數內部,傳遞的參數是 *L,那么L就是指針。指針需要用->指向成員。而在外部的L是實體對象,實體對象則用實心點來指向成員嘛。
  OK,線性表的初始化就這么簡單。



查看完整回答
反對 回復 2018-12-20
  • 1 回答
  • 0 關注
  • 1160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號