数据结构的求元素值操作

来源:互联网 发布:unity 角色模型优化 编辑:程序博客网 时间:2024/06/05 00:08

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;} 

原创粉丝点击