栈的基本操作
输入:栈的各个结点的值num。
输出:输出栈的各个结点的值。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>;
#define maxsize 100
typedef struct {
int data[maxsize];
int top;
}stack;
bool push(stack *s,int e){
if(s->top+1==maxsize){
return false;
}
s->data[s->top]=e;
s->top++;
return true;
}
bool pop(stack *s,int *e){
if(s->top==0){
return false;
}
s->top--;
*e=s->data[s->top];
return true;
}
int main(){
stack s;
int e;
int i;
s.top==0;
printf("要输入多少");
scanf("%d",&e);
while(e!=-1){
push(&s,e);
printf("要输入多少");
scanf("%d",&e);
}
while(s.top!=0){
pop(&s,&i);
printf("弹出的值为%d",i);
}
}
队列的基本操作
输入:队列的各个结点的值e。
输出:输出队列的各个结点的值。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>;
#define maxsize 100
typedef struct {
int front;
int rear;
int data[];
}quene;
bool enquene(quene *q,int e){
if(q->rear-q->front==maxsize){
return false;
}
q->data[q->rear]=e;
q->rear++;
return true;
}
bool out(quene *q,int *e){
if(q->rear==q->front){
return false;
}
*e=q->data[q->front];
q->front++;
return true;
}
int main(){
quene q;
int e,i;
q.front=q.rear=0;
printf("要输入多少");
scanf("%d",&e);
while(e!=-1){
enquene(&q,e);
printf("要输入多少");
scanf("%d",&e);
}
while(q.rear!=q.front){
out(&q,&i);
printf("%d ",i);
}
}
输入:字符串s1和字符串s2的值
输出:不含字符串s2的字符串s1
优化目标:可能没有优化目标。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>;
#define maxsize 100
int main()
{
char a[maxsize];
gets(a);
char b[maxsize];
gets(b);
int len1,len2;
len1=strlen(a);
len2=strlen(b);
int i,j,k;
int flag=1;
int f;
while(flag){
for(i=0; i<len1; i++){
flag=0;
if(a[i]==b[0]){
f=1;
for(j=i,k=0; k<len2; j++,k++)
if(a[j]!=b[k]){
f=0; //有一个不同则不需要删除
break;
}
if(f){//删除的情况
flag=1;
for(; j<len1; j++,i++)
a[i]=a[j];
for(; i<len1; i++)
a[i]='\0';
break;
}
}
len1=strlen(a);
}
}
puts(a);
}
这道题虽然做过但是再做时仍然出现了问题,若输入的数组b恰好在数组a的结尾位置时,如:a:hcat b:cat,还是出现了问题,后来翻看自己之前的笔记发现,如果已经删除了一个串b,可以加入一个f=1的标志,使得程序再次重新查找是否有相同的几位字母,这样就能解决问题。
输入:一行文本,其中以空格分隔为若干个单词,以.
结束。
输出:每个单词中的字母数。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<string.h>
int main(){
char c;
int f=0;
while(1){
int a=0;
scanf("%c",&c);
while(c!=' '&c!='.'){
a++;
scanf("%c",&c);
}
if(a!=0){
f++;
if(f==1)
printf("%d",a);
else
printf(" %d",a);
}
if(c=="."){
break;
}
}
}
因为临近测试,所以今天复习了一部分之前觉得有困惑的题目,更像是一种思路上的复习,代码还是要多复习才能更熟悉。