c语言伪代码大全,数据结构(C语言)教材的伪代码(一) 您所在的位置:网站首页 数据结构书上的代码都是伪代码吗 c语言伪代码大全,数据结构(C语言)教材的伪代码(一)

c语言伪代码大全,数据结构(C语言)教材的伪代码(一)

2024-07-17 11:43| 来源: 网络整理| 查看: 265

Status LocateElem_Sq(SqList L, ElemType e, Status(*compare) (ElemType, ElemType)){

//线性表L存在,compare()是数据元素判定函数.返回L中第1个与e满足关系compare()的数据元素的位序.

//若这样的元素不存在,则返回0;

int i = 1;//i的初值为第一个元素的位序

ElemType* p = L.elem;//p的初值为第一个元素的存储位置(地址)

while (i

pre_e = 0;

return FALSE;

}

return OK;

}

Status NextElem_Sq(SqList L, ElemType cur_e, ElemType& next_e){

//初始条件: 线性表L存在.

//操作结果: 若cur_e是L的数据元素,且不是最后一个,则用next_e返回他的后继,否则操作失败,next_e无定义NULL.

int i = 1;

i = LocateElem_Sq(L, cur_e, compare);

if (i >=1 && i < L.length){ //符合条件

next_e = L.elem;//i在数组中就是他的后继.

}

else{

next_e = 0;

return FALSE;

}

return OK;

}

Status ListInsert_Sq(SqList& L, int i, ElemType e){

//初始条件:线性表L存在,1 ≤ i ≤ ListLength(L)+1

//操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1

if (iL.length + 1)

return ERROR;

if (L.length >= L.listsize){

ElemType* newbase = (ElemType*)realloc(L.elem, (L.listsize + LISTINCREMENT)*sizeof(ElemType));

if (!newbase)

exit(OVERFLOW);

L.elem = newbase;

L.listsize += LISTINCREMENT;

}

ElemType* q = &(L.elem[i - 1]);

ElemType*p = NULL;

for (p = &(L.elem[L.length - 1]); p >= q; --p)

*(p + 1) = *p;

*q = e;

++L.length;

return OK;

}

Status ListDelete_Sq(SqList& L, int i, ElemType& e){

//初始条件:线性表L存在且非空,1 ≤ i ≤ ListLength(L)

//操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1

if ((i L.length))

return ERROR;

ElemType* p = NULL;

p = &(L.elem[i - 1]);

e = *p;

ElemType* q = NULL;

q = L.elem + L.length - 1;

for (++p; p

//初始条件:线性表L存在

//操作结果:依次对L的每个数据元素调用函数visit().一旦visit()失败,则操作失败.

//就是遍历函数

int i = 1;

ElemType p;

while (i

SqList p;

p.elem = NULL;

p.length = -1;

p.listsize = -1;

InitList_Sq(p);

DestroyList_Sq(p);

ClearList_Sq(p);

ListEmpty_Sq(p);

ListLength_Sq(p);

//插入线性表,

int e;

printf("在\"=\"后键入Ctrl+z表示输入结束.\n");

while (1){

printf("请输入第%d个元素的值=", ListLength_Sq(p)+1);

if (scanf("%d", &e) == EOF)

break;

ListInsert_Sq(p, ListLength_Sq(p) + 1, e);

}

ListTraverse_Sq(p, (*visit));

printf("--------------\n");

// 显示长度

ListLength_Sq(p);

printf("数据元素的个数=%d\n",ListLength_Sq(p));

// 返回元素

int i = 1;//初始化i=1

printf("要返回第几个元素的值(1 ≤ i ≤ %d) ", ListLength_Sq(p));

scanf("%d",&i);

GetElem_Sq(p, i, e);

printf("e=%d\n", e);

printf("--------------\n");

//判定函数

printf("请输入要查找的数=", e);

scanf("%d", &e);

printf("在线性表(顺序表)的第%d位\n", LocateElem_Sq(p, e, (*compare)));

printf("--------------\n");

//返回前驱的值

printf("请输入要查找的数=", e);

int pre_e1 = 0;

scanf("%d", &e);

PriorElem_Sq(p, e, pre_e1);

printf("%d的前驱是=%d\n",e,pre_e1);

printf("--------------\n");

//返回后继的值

printf("请输入要查找的数=", e);

int next_e1 = 0;

scanf("%d", &e);

NextElem_Sq(p, e, next_e1);

printf("%d的后继是=%d\n",e,next_e1);

printf("--------------\n");

// 插入函数

printf("请输入要插入的位置(1≤i≤%d)=",ListLength_Sq(p)+1);

scanf("%d",&i);

printf("请输入要插入的值=");

scanf("%d",&e);

ListInsert_Sq(p, i, e);

ListTraverse_Sq(p, (*visit));

printf("--------------\n");

//删除函数

printf("请输入要删除的位置(1≤i≤%d)=",ListLength_Sq(p));

scanf("%d",&i);

ElemType del_e;

ListDelete_Sq(p, i, del_e);

ListTraverse_Sq(p, (*visit));

printf("--------------\n");

//再掉一次遍历函数.

ListTraverse_Sq(p, (*visit));

return OK;

}



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有