您的位置:

c语言前驱算法,C语言前驱

本文目录一览:

用c语言设计线性顺序表,求前驱,后进的问题。

下面是我该完的程序。请运行一下,我改的地方都加了注释”//这里修改了“

#include stdio.h

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define OVERFLOW -2

#define MAXSIZE 100

typedef int status;

typedef int elemtype;

typedef struct {

elemtype elem[MAXSIZE];

int length;

}sqlist;

/*初始化*/

status initlist(sqlist *l){

l-length=0;

return OK;

}

/*销毁*/

status destroylist(sqlist *l){

l-length=0;

return OK;

}

/*顺序表置空*/

status clearlist(sqlist *l){

l-length=0;

return OK;

}

/*求顺序表长度*/

int listlength(sqlist l){

return l.length;

}

/*顺序表空否*/

status listempty(sqlist l){

if( l.length) return FALSE;

else return TRUE;

}

/*查找*/

int locateelem(sqlist l,elemtype e){

int i=0;

while(il.length)

if (l.elem[i++]==e) return i;

return 0;

}

/*读第i个元素*/

status getelem(sqlist l,int i,elemtype *e){

if((i1)||(il.length)) return ERROR;

*e=l.elem[i-1];

return OK;

}

/*求前驱*/

status priorelem(sqlist l,elemtype cur_e,elemtype *pre_e){

int i;

i=locateelem(l,cur_e);

if((i==0)||(i==1)) {*pre_e='no';printf(" 没有前驱 ");;return ERROR;} //这里修改了

else //这里修改了

{

*pre_e=l.elem[i-2];

return OK;

}

}

/*求后继*/

status nextelem(sqlist l,elemtype cur_e,elemtype *next_e){

int i;

i=locateelem(l,cur_e);

if((i==0)||(i==l.length)){ *next_e='no';printf(" 没有后继 ");return ERROR;} //这里修改了

else //这里修改了

{

*next_e=l.elem[i];

return OK;

}

}

/*在第i个位置插入元素e*/

status listinsert(sqlist *l,int i,elemtype e){

int j;

if((i1)||(il-length+1)) return ERROR;

for(j=l-length;ji-1;j--) l-elem[j]=l-elem[j-1];

l-elem[i-1]=e;

l-length++;

return OK;

}

/*删除第i个元素*/

status listdelete(sqlist *l,int i,elemtype *e){

int j;

if((i1)||(il-length)) return ERROR;

*e=l-elem[i-1];

for(j= i;j l-length;j++) l-elem[j-1]=l-elem[j];

l-length--;

return OK;

}

/*遍历*/

status listtraverse(sqlist l){

int i;

for(i=1;i=l.length;i++)

printf("%d ",l.elem[i-1]);

printf("\n");

return OK;

}

/*建立顺序表*/

status listcreate(sqlist *l){

int i=0;

elemtype e;

printf("input data(end by -1):");

scanf("%d",e);

while(e!=-1){

l-elem[i++]=e;

scanf("%d",e);

}

l-length=i;

return OK;

}

/*主函数*/

main(){

sqlist la,lb,lc;

int i;

elemtype e,pre_e,next_e;

listcreate(la);

listtraverse(la);

printf("the length of the list is %d\n",listlength(la));

printf("input i and e for insert:");

scanf("%d %d",i,e);

if(listinsert(la,i,e)) listtraverse(la);

else printf("i is error!\n");

printf("input i :");

scanf("%d",i);

getelem(la,i,e);

printf("the element is %d ,",e);

priorelem(la,e,pre_e);

nextelem(la,e,next_e);

if(pre_e!='no')printf("the priore is %d\n",pre_e); //这里修改了

if(next_e!='no')printf("the next is %d\n",next_e); //这里修改了

listdelete(la,i,e);

listtraverse(la);

}

字母前驱后驱c语言怎么表示

在C语言中

字符的直接前驱:'b'-1

字符的直接后继:'b'+1

注意输出的时候用控制符%c,比如

printf('%c','b'-1);

C语言的前驱后继问题

#include stdio.h

void main()

{

char c1, c2, c3;

printf("input a letter\n");

scanf("%c",c1);

c2 = c1 - 1;

c3 = c1 + 1;

if (c1 == 'a')

c2 = 'z';

if (c1 == 'z')

c3 = 'a';

printf("%c,%c\n",c2,c3);

}

不谢

C语言中的前趋结点是什么

前驱结点是线性表或链表等数据存储结构中的一个概念,当前结点的前一个结点称为直接前驱结点。

举例说明如下:

1、对于线性表存储结构:

1, 2, 3, 4, 5, ......, k, k+1, .......

则结点k+1的直接前驱结点为结点k

2、对于链表存储结构

// 结点的定义

struct node

{

     int data;  // 数据域

     struct node *next;   // 指针域 

};

struct node *Head;  // Head表示链表的头结点,则Head-next为头结点Head的后继结点;Head为Head-next的前驱节点

C语言:求前驱和后继字母。输入一个大写字母,求对应的小写字母及它的前驱和后继

楼主你好。

#includestdio.h

int main()

{

char ch,ch1,ch2;

scanf("%c",ch);

if(ch='B'ch='Y'){

ch1=ch+31;

ch2=ch+33;

}else if(ch=='A'){

ch1='-';

ch2=ch+33;

}else {

ch1=ch+31;

ch2='-';

}

printf("%c %c\n",ch1,ch2);

return 0;

}

ch,ch1,ch2应该声明为char类型。

你原先定义成为int类型会导致条件判断的时候总是进入最后一个else中。所以只有前驱,没有后继。

C语言中前驱后继字符是什么?下面程序怎么写

前驱就是前面的字符,比如b的前驱就是a,后继是一样的,那无非就是强制转化,读一个char ,强制为int,输出的就是它的码,让char加一就是后继,减一就是前驱