資料結構的求元素值操作__資料結構

來源:互聯網
上載者:User

1.順序表的求元素值:
bool GetElem(SqList *L, int i, ElemType &e)//求線性表中某個資料元素值{if (i < 1 || i > L -> length)return false;//參數錯誤時返回falsee = L -> data[i - 1];//取元素值return true;//成功找到元素時返回true}


2.單鏈表的求元素值:
bool GetElem(LinkList *L, int i, ElemType &e)//求線性表中某個資料元素值{int j = 0;LinkList *p = L;//p指向前端節點,j置為0(即前端節點的序號為0)while (j < i && p != NULL)//找第i個節點{j++;p = p -> next;}if (p == NULL)//不存在第i個資料節點,返回0return false;else//存在第i個資料節點,返回1{e = p -> data;return true;}}


3.雙鏈表的求元素值:
bool GetElem(DLinkList *L, int i, ElemType &e)//求線性表中某個資料元素值{int j = 0;DLinkList *p = L;while (j < i && p != NULL){j++;p = p -> next;}if (p == NULL)return false;else{e = p -> data;return true;}}


4.迴圈單鏈表的求元素值:
bool GetElem(LinkList *L,int i, ElemType &e)//找指定位置的元素{int j = 0;LinkList *p;if (L -> next != L)//單鏈表不為空白表時{if (i == 1){e = L -> next -> data;return true;}else//i不為1時{p = L -> next;while (j < i - 1 && p != L){j++;p = p -> next;}if (p == L)return false;else{e = p -> data;return true;}}}else//空表返回falsereturn false;}


5.迴圈雙鏈表的求元素值:
bool GetElem(DLinkList *L, int i, ElemType &e)//求線性表中某個資料元素值{int j = 0;DLinkList *p;if (L -> next != L)//雙鏈表不為空白表時{if (i == 1){e = L -> next -> data;return true;}else//i不為1時{p = L-> next;while (j < i - 1 && p != L){j++;p = p -> next;}if (p == L)return false;else{e = p -> data;return true;}}}else//雙鏈表為空白表時return false;}


6.順序棧的取棧頂元素:

bool GetTop(SqStack *s, ElemType &e)//取棧頂元素{if (s -> top == -1)//棧為空白的情況,即棧下溢出return false;e = s -> data[s -> top];//取棧頂指標元素的元素return true;}


7.鏈棧的取棧頂元素:
bool GetTop(LiStack *s, ElemType &e) //取棧頂元素{if (s -> next == NULL)//棧空的情況return false;e = s -> next -> data;return true;}


8.順序隊列的求出隊元素值:


bool deQueue(SqQueue *&q, ElemType &e)//出隊{if (q -> front == q -> rear)//隊空下溢出return false;q -> front = (q -> front + 1) % MaxSize;e = q -> data[q -> front];return true;}

9.順序串的求值:
SqString SubStr(SqString s,int i,int j){SqString str;int k;str.length = 0;if (i <= 0 || i > s.length || j < 0 || i + j - 1 > s.length)return str;//參數不正確時返回空串for (k = i - 1; k < i + j - 1; k++)  //將s.data[i..i+j]複製到strstr.data[k - i + 1] = s.data[k];str.length = j;return str;} 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.