收藏 分享(赏)

数据结构伪代码转化成为可执行源代码.doc

上传人:精品资料 文档编号:10880147 上传时间:2020-01-17 格式:DOC 页数:46 大小:33.04KB
下载 相关 举报
数据结构伪代码转化成为可执行源代码.doc_第1页
第1页 / 共46页
数据结构伪代码转化成为可执行源代码.doc_第2页
第2页 / 共46页
数据结构伪代码转化成为可执行源代码.doc_第3页
第3页 / 共46页
数据结构伪代码转化成为可执行源代码.doc_第4页
第4页 / 共46页
数据结构伪代码转化成为可执行源代码.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、数据结构伪代码转化为源代码尊重原作者的劳动,我只是个学习者,见此文章,感觉很有用,愿与大家一起分享-百度文库:桔紫蓝*/ -*/ 出自: 编程中国 http:/*/ 作者: cobby E-mail: QQ:51160333*/ 时间: 2007-10-26 编程论坛首发*/ 声明: 尊重作者劳动,转载请保留本段文字*/ -前言:这些是前几年我在大专教书时,数据结构课程中给学生写的学习例程,对于初学者有一定帮助。在此收集到一起,当个共享贴贡献给广大网友和编程爱好者。一般程序都不难也不大,并且所有例程均有较详细注释,适合自学。中间有一个“哈夫曼编码”,程序较大,希望能给大家一点启示。以下所有程序

2、均在 VC+6.0 开发环境中调试通过,运行正常。有任何疑问可以“另外”发贴讨论。更多内容请访问我的博客 http:/。自认为本贴内容充实,对网友会所很大帮助,请版主或者管理员置顶加精,谢谢。数据结构与算法基本程序目录一、 线性表及其操作1、 尾插法建立一个单链表,并按顺序输出2、 单链表的元素查找,按内容查找3、 元素插入操作4、 按内容元素删除操作5、 按位置删除元素6、 建立双向链表7、 单链表就地逆置8、 约瑟夫环问题二、 栈及其操作1、 建立堆栈2、 进栈与出栈3、 栈的应用,括号匹配三、 队及其操作1、 链队列的建立2、 入队和出队3、 循环队列建立4、 循环队列的入队和出队操作四

3、、 串及其操作1、 串的朴素匹配五、 树(二叉树)及其操作1、 二叉排序树2、 哈夫曼编码六、 排序1、 冒泡排序2、 直接选择排序法一、线性表及其操作/All copyright are preserved by cobby/*尾插法建立一个单链表,并按顺序输出*/#define NULL 0 /*宏定义*/typedef struct node /*定义结点类型的数据结构*/char c; /*数据域,类型为字符型*/struct node *next; /*指针域,类型为本结构体类型*/*L; /*类型重定义,即 Node 和*L 和 struct node 等价*/main()L l,

4、p,q; /*用指针类型定义三个结点类型的指针*/char ch;l=(L)malloc(sizeof(L); /*分配内存空间*/l-c=0; /*为头结点的数据域赋值,值为空*/l-next=NULL; /*指明下一个结点目前不存在*/q=l; /*q 为游动指针,链表结点的连结要用*/printf(“Input a character:n“);scanf(“%c“,getchar(); /此语句用来吸收键盘输入的回车符,没有其它含义while(ch!=!) /*输入!表示输入结束*/p=(L)malloc(sizeof(L); /*为新输入的数据分配内存空间*/p-c=ch;p-next

5、=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p; /*q 用于将上一个元素链接至当前新元素*/q=p; /*q 自己移到当前最后一个元素,以备继续链接所用*/scanf(“%c“,getchar();q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/A

6、ll copyright are preserved bycobby/*单链表的元素查找,按内容查找*/#define NULL 0 /*宏定义*/typedef struct node /*定义结点类型的数据结构*/char c; /*数据域,类型为字符型*/struct node *next; /*指针域,类型为本结构体类型*/*L; /*类型重定义,即 Node 和*L 和 struct node 等价*/main()L l,p,q; /*用指针类型定义三个结点类型的指针*/char ch;int n;l=(L)malloc(sizeof(L); /*分配内存空间*/l-c=0; /*为

7、头结点的数据域赋值,值为空*/l-next=NULL; /*指明下一个结点目前不存在*/q=l; /*q 为游动指针,链表结点的连结要用*/printf(“Input a character:n“);scanf(“%c“,getchar();while(ch!=!) /*输入!表示输入结束*/p=(L)malloc(sizeof(L); /*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p; /*q 用于将上一个元素链接至当前新元素*/q=p; /*q 自己移到当前最后一个元素,以备继续链接所用*/s

8、canf(“%c“,getchar();q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/*-以上为建立一个单链表-*/printf(“nInput a character you wanna findn“);scanf(“%c“,printf(“nthe character you wan

9、na find is %cn“,ch);q=l-next; /*q 移至头结点的后一个元素,即实际第一个数据点*/n=1; /位置计数器while(q!=NULL) /*若 q 不为空,即该结点存在*/if(q-c=ch) /*字符匹配*/printf(“character found in position %dn“,n);q=q-next; /*移至下一个元素继续查找*/n+;/All copyright are preserved bycobby/*元素插入操作*/#define NULL 0 /*宏定义*/typedef struct node /*定义结点类型的数据结构*/char

10、c; /*数据域,类型为字符型*/struct node *next; /*指针域,类型为本结构体类型*/Node,*L; /*类型重定义,即 Node 和*L 和 struct node 等价*/main()L l,p,q; /*用指针类型定义三个结点类型的指针*/char ch;int pos,n;l=(L)malloc(sizeof(Node); /*分配内存空间*/l-c=0; /*为头结点的数据域赋值,值为空*/l-next=NULL; /*指明下一个结点目前不存在*/q=l; /*q 为游动指针,链表结点的连结要用*/printf(“Input a character:n“);sc

11、anf(“%c“,getchar();while(ch!=!) /*输入!表示输入结束*/p=(L)malloc(sizeof(Node); /*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p; /*q 用于将上一个元素链接至当前新元素*/q=p; /*q 自己移到当前最后一个元素,以备继续链接所用*/scanf(“%c“,getchar();q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元

12、素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/*以上为建立一个单链表*/printf(“Input the character and its position, such as s,3nn“);scanf(“%c,%d“,q=l;n=1;while(n!=posn+;/*退出循环后,要么找到插入位置,要么表已到最后,输入的插入位置过大*/if(nc=ch;p-next=q-next;q-next=p;/*操作完成,然后输出新表*/q=l;

13、/*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/All copyright are preserved bycobby/*按内容元素删除操作*/#include#include#define NULL 0 /*宏定义*/typedef struct node /*定义结点类型的数据结构*/char

14、c; /*数据域,类型为字符型*/struct node *next; /*指针域,类型为本结构体类型*/Node,*L; /*类型重定义,即 Node 和*L 和 struct node 等价*/main()L l,p,q; /*用指针类型定义三个结点类型的指针*/char ch;int n;l=(L)malloc(sizeof(Node); /*分配内存空间*/l-c=0; /*为头结点的数据域赋值,值为空*/l-next=NULL; /*指明下一个结点目前不存在*/q=l; /*q 为游动指针,链表结点的连结要用*/printf(“Input a character:n“);scanf(

15、“%c“,getchar();while(ch!=!) /*输入!表示输入结束*/p=(L)malloc(sizeof(Node); /*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p; /*q 用于将上一个元素链接至当前新元素*/q=p; /*q 自己移到当前最后一个元素,以备继续链接所用*/scanf(“%c“,getchar();q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据

16、输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/*以上为建立单链表*/printf(“input the character you wanna deletenn“);scanf(“%c“,printf(“the element you wanna delete is %cnn“,ch);q=l-next;p=l;n=1;while(q!=NULLq=q-next;n+;/*退出循环时可能找到指定元素,也可能表读完,需要进一步判断*/if(q=NULL

17、)printf(“element not found, delete failednn“);elsep-next=q-next;q=l-next; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/All copyright are preserved bycobby/*按位置删除元素*/#define NULL 0 /

18、*宏定义*/typedef struct node /*定义结点类型的数据结构*/char c; /*数据域,类型为字符型*/struct node *next; /*指针域,类型为本结构体类型*/Node,*L; /*类型重定义,即 Node 和*L 和 struct node 等价*/main()L l,p,q; /*用指针类型定义三个结点类型的指针*/char ch;int pos,n;l=(L)malloc(sizeof(Node); /*分配内存空间*/l-c=0; /*为头结点的数据域赋值,值为空*/l-next=NULL; /*指明下一个结点目前不存在*/q=l; /*q 为游动

19、指针,链表结点的连结要用*/printf(“Input a character:n“);scanf(“%c“,getchar();while(ch!=!) /*输入!表示输入结束*/p=(L)malloc(sizeof(Node); /*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p; /*q 用于将上一个元素链接至当前新元素*/q=p; /*q 自己移到当前最后一个元素,以备继续链接所用*/scanf(“%c“,getchar();q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*

20、/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/*以上为建立单链表*/printf(“Input the positionn“);scanf(“%d“,p=l;n=1;while(p-next!=NULLn+;/*退出循环后,可能找到删除的元素位置,可能表读完,需要进一步判断*/if(n=pos) /*删除位置找到,删除该位置上的元素*/p-next=p

21、-next-next;/free(p);elseprintf(“incorrect position, delete failedn“);q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/建立双向链表#include#include#include#define NULL 0typedef

22、struct dlnodechar ch;struct dlnode *pri,*next;dnode,*dl;main()dl l,p,q;char c;l=(dl)malloc(sizeof(dnode);l-ch=0;l-next=NULL;l-pri=NULL;q=l;printf(“输入字符建立双向链表n“);scanf(“%c“,getchar();while(c!=!)p=(dl)malloc(sizeof(dnode);p-ch=c;p-pri=q;p-next=NULL;q-next=p;q=p;scanf(“%c“,getchar();q=l;while(q-next!=N

23、ULL)q=q-next;printf(“%c“,q-ch);printf(“n“);while(q-pri!=NULL)printf(“%c“,q-ch);q=q-pri;printf(“n“);/单链表就地逆置#define NULL 0 /*宏定义*/typedef struct node /*定义结点类型的数据结构*/char c; /*数据域,类型为字符型*/struct node *next; /*指针域,类型为本结构体类型*/Node,*L; /*类型重定义,即 Node 和*L 和 struct node 等价*/main()L l,p,q,r; /*用指针类型定义三个结点类型

24、的指针*/char ch;l=(L)malloc(sizeof(Node); /*分配内存空间*/l-c=0; /*为头结点的数据域赋值,值为空*/l-next=NULL; /*指明下一个结点目前不存在*/q=l; /*q 为游动指针,链表结点的连结要用*/printf(“Input a character:n“);scanf(“%c“,getchar();while(ch!=!) /*输入!表示输入结束*/p=(L)malloc(sizeof(Node); /*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/q-n

25、ext=p; /*q 用于将上一个元素链接至当前新元素*/q=p; /*q 自己移到当前最后一个元素,以备继续链接所用*/scanf(“%c“,getchar();q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q 移至下一个元素重复输出操作*/printf(“n“);/以上完成了单链表的创建q=l-next;p=q-ne

26、xt;r=p-next;q-next=NULL;while(r!=NULL)p-next=q;q=p;p=r;if(r-next!=NULL) /r 后面还有结点,则逆置继续r=r-next;elsebreak;r-next=q;l-next=r; /头结点指向最后一个结点q=l; /*输入整个链表前,先将 q 移到链表头,l 一般不动*/while(q-next!=NULL) /*若 q 所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(“%c“,q-next-c); /*q-next-c 表示 q 所指向的下一个元素的数据*/q=q-next; /*完成该元素的输出后,q

27、 移至下一个元素重复输出操作*/printf(“n“);/约瑟夫环问题#include#includetypedef struct lnodeint num;struct lnode *next;node,*L;main()int amount,start,circle,n,c;L p,l,q;printf(“一共有几个人围成一圈?n“);scanf(“%d“,getchar();printf(“从第几个开始计数?n“);scanf(“%d“,getchar();printf(“每几人一次循环?n“);scanf(“%d“,getchar();l=(L)malloc(sizeof(node);

28、 /头结点l-next=NULL;l-num=0;q=l;n=0;while(n+next=NULL;p-num=n;q-next=p;q=p;q-next=l-next; /形成循环链表/以上完成了单向循环链表的建立p=l-next;q=l;n=1;while(n+next;q=q-next;/退出循环时 p,q 分别位于指定位置/接下去进行周期性结点删除,直到链表只余一个结点为止n=1; /n 计算被删除的结点的数量,当 n=amount-1 时删除结束while(n+next;q=q-next;/删除当前 p 指向的结点printf(“删除结点%dt“,p-num);q-next=p-n

29、ext;p=p-next;printf(“n 最后剩下%dn“,p-num);二、栈及其操作/All copyright are preserved bycobby/*建立堆栈*/#include#include#define NULL 0typedef struct nodechar ch;struct node *next;Snode,*stack;main()stack s,top,p;char ch;s=(stack)malloc(sizeof(Snode);s-ch=0;s-next=NULL; /*建立栈底指针*/top=s;scanf(“%c“,getchar();while(c

30、h!=!)p=(stack)malloc(sizeof(Snode);p-ch=ch;p-next=top;top=p;scanf(“%c“,getchar();while(top-next!=NULL)printf(“%c“,top-ch);top=top-next;printf(“n“);/All copyright are preserved bycobby/*进栈与出栈*/#include#include#define NULL 0typedef struct nodechar ch;struct node *next;Snode,*stack;main()stack s,top,p;

31、char ch;int choice;s=(stack)malloc(sizeof(Snode);s-ch=!;s-next=NULL; /*建立栈底指针*/top=s;scanf(“%c“,getchar();while(ch!=!)p=(stack)malloc(sizeof(Snode);p-ch=ch;p-next=top;top=p;scanf(“%c“,getchar();while(p-next!=NULL) /此处 p 可用 top 代替printf(“%c“,p-ch);p=p-next;printf(“n“);/*以上建立了一个堆栈*/printf(“进栈或出栈?输入“1”

32、为进栈,输入“2”为出栈,其它则退出程序n“);scanf(“%d“,getchar();while(choice=1|choice=2) /若不是输入 1 或 2,则不做任何操作if(choice=1)/*进栈*/printf(“n 输入要入栈的元素n“);scanf(“%c“,getchar();p=(stack)malloc(sizeof(Snode);p-ch=ch;p-next=top;top=p;else if(choice=2)if(top-next!=NULL)top=top-next;elseprintf(“栈已清空n“);exit();/*出栈*/printf(“%c“,t

33、op-ch);p=top;while(p-next!=NULL)printf(“%c“,p-ch);p=p-next;printf(“n“);printf(“进栈或出栈?输入“1”为进栈,输入“2”为出栈,其它则退出程序n“);scanf(“%d“,getchar();/All copyright are preserved bycobby/栈的应用,括号匹配#include#include#define NULL 0typedef struct nodechar ch;struct node *next;snode,*stack;main()stack s,top,p;char *strin

34、g,ch100=“;s=(stack)malloc(sizeof(snode); /建立栈底元素s-ch=0;s-next=NULL;top=s;printf(“输入一个含括号的四则运算表达式:n“);scanf(“%s“,ch);string=ch;while(*string!=0)if(*string=(|*string=|*string=) /遇到左括号,入栈p=(stack)malloc(sizeof(snode);p-ch=*string;p-next=top;top=p;else if(*string=)|*string=|*string=) /遇到右括号if(*string=)i

35、f(top-ch=() /括号匹配top=top-next;elseprintf(“小括号不匹配“);exit(0);else if(*string=)if(top-ch=) /括号匹配top=top-next;elseprintf(“中括号不匹配“);exit(0);elseif(top-ch=) /括号匹配top=top-next;elseprintf(“大括号不匹配“);exit(0);string+;if(top-ch!=0)printf(“多出左括号%cn“,top-ch);三、队及其操作/All copyright are preserved bycobby/链队列的建立#incl

36、ude#include#include#define NULL 0typedef struct node /队列结点的基本数据结构,即队列中每个结点的类型char c;struct node *next;qnode,*basic_node;typedef struct /队列实际上由头、尾两个结点指针构成,即头指针和尾指针唯一确定时,队列也被唯一确定qnode *head;qnode *rear;queue,*Q;main()Q q; /定义队列,结构体变量 q 中含有头指针 head 和尾指针 rear,所以 q 是一个完整的队列(只不过队列为空)/事实上,任何由 Q 定义的结构体变量都是一

37、个独立完整的队列basic_node p,l; /basic_node 是基本结点类型,即是独立的结点,它是组成队列的基本元素。/基本结点 p,l 和队列 q 的关系可由下图表示:/ (q-head)-p-l-p-l-p-l-(q-rear)char ch;q=(Q)malloc(sizeof(queue);q-head=NULL; /初始化时队列为空q-rear=NULL;printf(“输入队列元素:n“);scanf(“%c“,getchar();while(ch!=!)p=(qnode*)malloc(sizeof(qnode);p-c=ch;p-next=NULL; /新来的元素一定

38、在队列的最后,它的后面没有其它元素if(q-head=NULL)q-head=p; /第一个元素入队时,队头指针指向它l=q-head; /l 指向第一个元素l-next=p; /使前一个元素指向当前入队的新元素l=p; /l 移动到当前新元素,以备用下次入队操作q-rear=p; /修改队尾指针,使其总是指向当前最后一个队列元素scanf(“%c“,getchar();l=q-head;while(l!=NULL)printf(“%cc);l=l-next;printf(“n“);printf(“头指针指向元素为%ct 尾指针指向元素为%cn“,q-head-c,q-rear-c );/Al

39、l copyright are preserved bycobby/入队和出队#include#include#include#define NULL 0typedef struct node /队列结点的基本数据结构,即队列中每个结点的类型char c;struct node *next;qnode,*basic_node;typedef struct /队列实际上由头、尾两个结点指针构成,即头指针和尾指针唯一确定时,队列也被唯一确定qnode *head;qnode *rear;queue,*Q;main()Q q; /定义队列,结构体变量 q 中含有头指针 head 和尾指针 rear,

40、所以 q 是一个完整的队列(只不过队列为空)/事实上,任何由 Q 定义的结构体变量都是一个独立完整的队列basic_node p,l; /basic_node 是基本结点类型,即是独立的结点,它是组成队列的基本元素。/基本结点 p,l 和队列 q 的关系可由下图表示:/ (q-head)-p-l-p-l-p-l-(q-rear)char ch;int choice;q=(Q)malloc(sizeof(queue);q-head=NULL; /初始化时队列为空q-rear=NULL;printf(“输入队列元素:n“);scanf(“%c“,getchar();while(ch!=!)p=(q

41、node*)malloc(sizeof(qnode);p-c=ch;p-next=NULL; /新来的元素一定在队列的最后,它的后面没有其它元素if(q-head=NULL)q-head=p; /第一个元素入队时,队头指针指向它l=q-head; /l 指向第一个元素l-next=p; /使前一个元素指向当前入队的新元素l=p; /l 移动到当前新元素,以备用下次入队操作q-rear=p; /修改队尾指针,使其总是指向当前最后一个队列元素scanf(“%c“,getchar();l=q-head;while(l!=NULL)printf(“%cc);l=l-next;printf(“n“);p

42、rintf(“头指针指向元素为%ct 尾指针指向元素为%cn“,q-head-c,q-rear-c );/以上建立了一个队列printf(“输入 1 进行入队,输入 2 进行出队:n“);scanf(“%d“,getchar();if(choice=1)printf(“n 输入要入队的元素:n“);scanf(“%c“,getchar();p=(qnode*)malloc(sizeof(qnode); /给新入队的元素分配内存空间p-c=ch;p-next=NULL; /新元素为最后一个元素q-rear-next=p; /原来最后一个元素指向新入队的元素q-rear=p; /修改队尾指针,使其

43、指向当前最后一个元素else if(choice=2)q-head=q-head-next;elseexit(0);l=q-head;while(l!=NULL)printf(“%cc);l=l-next;printf(“n“);printf(“头指针指向元素为%ct 尾指针指向元素为%cn“,q-head-c,q-rear-c );/All copyright are preserved bycobby/循环队列建立#include#include#define MAX 8typedef structchar cMAX; /循环队列是顺序队列的一种,它的核心就是一个数组int front;

44、/整形变量,作为头指针用int rear; /整形变量,作为尾指针用queue;main()queue *q;char ch;int i;q=(queue*)malloc(sizeof(queue); /生成一个空循环队列for(i=0;ici=0;q-front=0;q-rear=0;printf(“输入要入队的元素:n“);scanf(“%c“,getchar();while(ch!=!)if(q-rear+1)%MAX=q-front) /若队列已满printf(“队列已满,无法入队n“);break;elseq-cq-rear=ch; /rear 指向当前可入队的数组元素位置q-rea

45、r=(q-rear+1)%MAX; /修改尾指针,向后移动一个位置/注意,不能简单使用 q-rear+,不然会导致队列溢出scanf(“%c“,getchar();for(i=q-front;irear;i=(i+1)%MAX) /能够用 for 循环,说明了顺序队列和链式队列的区别printf(“%cci);printf(“n“);/All copyright are preserved bycobby/循环队列的入队和出队操作#include#include#define MAX 8typedef structdchar cMAX; /循环队列是顺序队列的一种,它的核心就是一个数组int front; /整形变量,作为头指针用int rear;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报