编写一个程序,实现顺序串的各种基本运算,并在此基础上设计一个主程序。具体如下: 编写栈的基本操作函数
#include
#include
#define Maxqsize 5
typedef char ElemType;
typedef struct
{
ElemType elem[Maxqsize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue *&q)
{
q=(SqQueue *)malloc (sizeof(SqQueue));
q->front=q->rear=0;
}
void ClearQueue(SqQueue *&q)
{
free(q);
}
int QueueLength(SqQueue *q)
{
return (q->rear-q->front+Maxqsize)%Maxqsize;
}
int QueueEmpty(SqQueue *q)
{
return(q->front==q->rear);
}
int enQueue(SqQueue *&q,ElemType e)
{
if ((q->rear+1)%Maxqsize==q->front)
return 0;
q->rear=(q->rear+1)%Maxqsize;
q->elem[q->rear]=e;
return 1;
}
int deQueue(SqQueue *&q,ElemType &e)
{
if (q->front==q->rear)
return 0;
q->front=(q->front+1)%Maxqsize;
e=q->elem[q->front];
return 1;
}
void main()
{
ElemType e;
SqQueue *q;
printf("(1)初始化队列Q
");
InitQueue(q);
printf("(2)依次进队列元素A,B,C
");
if (enQueue(q,'A')==0) printf("队满,不能进队
");
if (enQueue(q,'B')==0) printf("队满,不能进队
");
if (enQueue(q,'C')==0) printf("队满,不能进队
");
printf("(3)队列为%s
",(QueueEmpty(q)?"空":"非空"));
if (deQueue(q,e)==0)
printf("队空,不能出队
");
else
printf("(4)出队一个元素%c
",e);
printf("(5)队列Q的元素个数:%d
",QueueLength(q));
printf("(6)依次进队列元素D,E,F
");
if (enQueue(q,'D')==0) printf("队满,不能进队
");
if (enQueue(q,'E')==0) printf("队满,不能进队
");
if (enQueue(q,'F')==0) printf("队满,不能进队
");
printf("(7)队列Q的元素个数:%d
",QueueLength(q));
printf("(8)出队列序列:");
while (!QueueEmpty(q))
{ deQueue(q,e);
printf("%c ",e);
}
printf("
");
printf("(9)释放队列
");
ClearQueue(q);
}
#includeusing namespace std;const int Max=100;template class MyStack{ private: T *aa; unsigned int p; public : void init(); bool isEmpty(); T pop(); void push(const T a); unsigned int size(); void destroy(); };template void MyStack::init(){ aa = new T[Max+1]; p=0; return; };template bool MyStack::isEmpty(){ if(p==0) return true; else return false;};template unsigned int MyStack::size(){ return p;};template void MyStack::push(const T a){ p=p+1; aa[p]=a; };template T MyStack::pop(){ char t=aa[p]; p=p-1; cout void MyStack::destroy(){ delete[] aa;};int main(){ MyStack st; st.init(); if(st.isEmpty()) cout << "MyStack is empty" << endl; else cout <<"MyStack is not empty" << endl; st.push('a'); st.push('b'); st.push('c'); st.push('d'); st.push('e'); cout<< st.size()<<endl; while(!st.isEmpty()) st.pop(); st.destroy(); system("pause"); return 0;}
#include<stdio.h>
#define MaxSize 100
typedef char ElemType;
typedef struct //定义一个串
{
ElemType data[MaxSize];
int length;
}SqString;
void StrAssign(SqString &str,char cstr[]) /////////////////////////
{
int i;
for(i=0;cstr[i]!='\0';i++)
str.data[i]=cstr[i];
str.length=i;
}
int StrLength(SqString s) //串的长度
{
return s.length;
}
void DispStr(SqString s) //输出数据
{
int i;
if(s.length>0)
{
for(i=0;i<s.length;i++)
{
printf("%c ",s.data[i]);
}
}
}
SqString InsStr(SqString s1,int i,SqString s2) //插入子串
{
int j;
SqString str;
str.length=0;
if(i<=0 || i>s1.length+1)
return str;
for(j=0;j<i-1;j++)
str.data[j]=s1.data[j];
for(j=0;j<s2.length;j++)
str.data[i+j-1]=s2.data[j];
for(j=i-1;j<s1.length;j++)
str.data[s2.length+j]=s1.data[j];
str.length=s1.length+s2.length;
return str;
}
SqString DelStr(SqString s,int i,int j) //删除字符子串
{
int k;
SqString str;
str.length=0;
if(i<=0 || i>s.length || i+j>s.length+1)
return str;
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=i+j-1;k<s.length;k++)
str.data[k-j]=s.data[k];
str.length=s.length-j;
return str;
}
SqString RepStr(SqString s,int i,int j,SqString t) //替换
{
int k;
SqString str;
str.length=0;
if(i<=0 || i>s.length || i+j>s.length+1)
return str;
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=0;k<t.length;k++)
str.data[i+k-1]=t.data[k];
for(k=i+j-1;k<s.length;k++)
str.data[t.length+k-j]=s.data[k];
str.length=s.length+t.length-j;
return str;
}
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++)
str.data[k-i+1]=s.data[k];
str.length=j;
return str;
}
SqString concat(SqString s,SqString t) //串连接
{
SqString str;
int i;
str.length=s.length+t.length;
for(i=0;i<s.length;i++)
str.data[i]=s.data[i];
for(i=0;i<t.length;i++)
str.data[s.length+i]=t.data[i];
return str;
}
int main()
{
SqString s,s1,s2,s3,s4;
printf("(1) 建立串“abcdefghijklmn”和串“xyz”\n");
StrAssign(s,"abcdefghijklmn");
StrAssign(s1,"xyz");
printf("已建立\n\n");
printf("(2) 输出串s\n");
DispStr(s);
printf("\n\n");
printf("(3) 输出串s的长度\n");
printf("s的长度为 %d\n\n",StrLength(s));
printf("(4) 在串s的第9个字符位置插入串s1而产生串s2\n");
s2=InsStr(s,9,s1);
printf("已插入\n\n");
printf("(5) 输出串s2\n");
DispStr(s2);
printf("\n\n");
printf("(6) 删除串s第2个字符开始的5个字符而产生串s2\n");
s2=DelStr(s,2,5);
printf("已删除\n\n");
printf("(7) 输出串s2\n");
DispStr(s2);
printf("\n\n");
printf("(8) 将串s的第2个字符开始的5个字符替换成串s1而产生串s2\n");
s2=RepStr(s,2,5,s1);
printf("已替换\n\n");
printf("(9) 输出串s2\n");
DispStr(s2);
printf("\n\n");
printf("(10) 提取串s的第2个字符开始的10个字符而产生串s3\n");
s3=SubStr(s,2,10);
printf("已产生新串\n\n");
printf("(11) 输出串s3\n");
DispStr(s3);
printf("\n\n");
printf("(12) 将串s1和串s2连接起来而产生串s4\n");
s4=concat(s1,s2);
printf("已连接\n\n");
printf("(13) 输出串s4\n");
DispStr(s4);
return 1;
}
#include<stdio.h>
#define MaxSize 100
typedef struct
{
char data[MaxSize];
int length;
}SqString;
void StrAssign(SqString &str,char cstr[])
{
int i;
for(i=0;cstr[i]!='\0';i++)
str.data[i]=cstr[i];
str.length=i;
}
void StrCopy(SqString &s,SqString t)
{
int i;
for(i=0;i<t.length;i++)
s.data[i]=t.data[i];
s.length=t.length;
}
int StrEqual(SqString s,SqString t)
{
int same=1,i;
if(s.length!=t.length)
same=0;
else
{
for(i=0;i<s.length;i++)
if(s.data[i]!=t.data[i])
same=0;
}
return same;
}
int StrLength(SqString s)
{
return s.length;
}
SqString Concat(SqString s,SqString t)
{
SqString str;
int i;
str.length=s.length+t.length;
for(i=0;i<s.length;i++)
str.data[i]=s.data[i];
for(i=0;i<t.length;i++)
str.data[s.length+i]=t.data[i];
return str;
}
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)
{
printf("参数不正确\n");
return str;
}
for(k=i-1;k<i+j-1;k++)
str.data[k-i+1]=s.data[k];
str.length=j;
return str;
}
SqString InsStr(SqString s1,int i,SqString s2)
//
{
int j;
SqString str;
str.length=0;
if(i<=0||i>s1.length+1)
{
printf("参数不正确\n");
return s1;
}
for(j=0;j<i-1;j++)
str.data[j]=s1.data[j];
for(j=0;j<s2.length;j++)
str.data[i+j-1]=s2.data[j];
for(j=i-1;j<s1.length;j++)
str.data[s2.length+j]=s1.data[j];
str.length=s1.length+s2.length;
return str;
}
SqString DelStr(SqString s,int i,int j)
{
int k;
SqString str;
str.length=0;
if(i<=0||i>s.length||i+j>s.length+1)
{
printf("参数不正确\n");
return str;
}
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=i+j-1;k<s.length;k++)
str.data[k-j]=s.data[k];
str.length=s.length-j;
return str;
}
SqString RepStr(SqString s,int i,int j, SqString t)
{
int k;
SqString str;
str.length=0;
if(i<=0||i>s.length||i+j-1>s.length)
{
printf("参数不正确\n");
return str;
}
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=0;k<t.length;k++)
str.data[i+k-1]=t.data[k];
for(k=i+j-1;k<s.length;k++)
str.data[t.length+k-j]=s.data[k];
str.length=s.length-j+t.length;
return str;
}
void DispStr(SqString s)
{
int i;
if(s.length>0)
{
for(i=0;i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
}
void main()
{
SqString s,s1,s2,s3,s4;
printf("(1)建立串s和串s1\n");
StrAssign(s,"abcdefghijklmn");
StrAssign(s1,"xyz");
printf("(2)输出串s:");
DispStr(s);
printf("(3)串s的长度:%d\n",StrLength(s));
printf("(4)在串的第九个字符位置插入串s1而产生串s2\n");
s2=InsStr(s,9,s1);
printf("(5)输出串s2:");
DispStr(s2);
printf("(6)删除串s第二个字符开始的个字符而产生串s2\n");
s2=DelStr(s,2,3);
printf("(7)输出串s2:");DispStr(s2);
printf("(8)将串s第二个字符开始的个字符替换成串s1而产生串s2\n");
s2=RepStr(s,2,5,s1);
printf("(9)输出串s2:");
DispStr(s2);
printf("(10)提取串s的第二个字符开始的个字符而产生串s3\n");
s3=SubStr(s,2,10);
printf("(11)输出串s3:");
DispStr(s3);
printf("(12)将串s1和串s2连接起来而产生串s4\n");
s4=Concat(s1,s2);
}
irirjijgirj好好哈哈
一个简单的商品管理系统程序清单 c++ 请25号前交给我 malchike@live.cn...
cout<<"按库存量排序, 请选择: 1 "<<endl;cout<<"按商品代码排序,请选择: 2 "<<endl;cout<<"按商品代码查询,请选择: 3 "<<endl;cout<<"按库存量查询, 请选择: 4 "<<endl;cout<<"显示商品信息, 请选择: 5 "<<endl;cout<<"结束程序, 请选...
python程序设计主要学什么
Python学习顺序:①Python软件开发基础 掌握计算机的构成和工作原理 会使用Linux常用工具 熟练使用Docker的基本命令 建立Python开发环境,并使用print输出 使用Python完成字符串的各种操作 使用Python re模块进行程序设计 使用Python创建文件、访问、删除文件 掌握import 语句、From…import 语句、From…import* 语句...
你好,数据结构(C语言)中实现有序链表的插入,删除结点基本操作,及两个有...
{ menu(); menu_select(); return 0;}这是我以前写过的一个程序,里面包含了单向链表的各种操作,你可以看一看。至于你说的归并,实在不好意思,还没有学数据结构,那个帮不了你。悬赏我也不要,没有解决问题。 追问 嗯嗯,你这个做得挺好的,谢啦 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 ...
编写一个函数,输和一行字符,将此字符串中最长的单词输出
C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。 2. 运算符丰富 C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
程序设计包括哪些内容?
根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言包含三个方面,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成程序的各个记号之间的组合规则,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示的...
c语言教程有哪些
1、C语言的基础教程 C语言的基础教程,可以分为四个部分:变量、表达式、控制结构、函数。在学习C语言的基本知识之前,应该先了解这四个部分。变量是C语言中用来表示数据的容器,可以用来存储各种类型的数据,如整数、浮点数、字符串等。而表达式则是用来操作变量的语句,控制结构是用来控制程序执行顺序的...
单片机控制一个4位的共阴数码管通电的状态下显示时间的程序
case 6:P3=b[1];P2=a[shig];break;case 7:P3=b[0];P2=a[shis];break;} delay(1);};} void jiance()\/\/检测键是否按下按不同键实现不同的处理。{ if(PRESS1==0){ delay(2);if(PRESS1==0){ while(!PRESS1);ji++;if(ji>=4)ji=0;} } if(ji==1){ if(PRESS2==0){...
计算机的指令由___和操作数或地址码组成。
在电脑上,一条指令代码由操作码和地址码两部分组成。指令告诉计算机从事某一特殊运算的代码。如:数据传送指令、算术运算指令、位运算指令、程序流程控制指令、串操作指令、处理器控制指令。指令是计算机能实现的基本操作,指令均为二进制数形式,指令由操作码和地址码组成,操作码告诉计算机执行什么操作,...
设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键...
基本要求 :1.要制作字符形式的菜单.2.不同的功能使用不同的函数实现.3.对程序进行必要的注释.题目三:停车场管理问题问题描述:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在南端,最先到达的第一辆...
python如何自学
学习python主要有自学和报班学习两种方式。具体学的顺序如下:①Python软件开发基础 掌握计算机的构成和工作原理 会使用Linux常用工具 熟练使用Docker的基本命令 建立Python开发环境,并使用print输出 使用Python完成字符串的各种操作 使用Python re模块进行程序设计 使用Python创建文件、访问、删除文件 掌握import ...