栈的建立,插入,删除以及输出操作。
输入:栈的各个结点的值,要插入的结点的值。
输出:栈的各个结点的值,插入元素后栈的各个结点的值,弹出的元素值,弹出元素后栈的各个结点的值。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
#include <stdbool.h>
#define maxsize 100
typedef struct{
int data[maxsize];
int top;
}stack;
stack initstack(){
stack s;
s.top=-1;
int num;
printf("栈的值为:");
scanf("%d",&num);
while(num!=-1){
s.top++;
s.data[s.top]=num;
scanf("%d",&num);
}
return s;
}
stack push(stack s,int e){
if(s.top==maxsize){
printf("越界");
return s;
}
s.top++;
s.data[s.top]=e;
return s;
}
bool pop(stack *s,int *e){
if(s->top==-1){
return false;
}
*e=s->data[s->top];
s->top--;
return true;
}
int print(stack s){
if(s.top==-1){
printf("NULL");
return NULL;
}
int i;
for(i=0;i<=s.top;i++){
printf("%d ",s.data[i]);
}
}
int main (){
stack s=initstack();
printf("\n");
printf("栈的值为:");
print(s);
printf("\n");
printf("要加入的元素值为:");
int e;
scanf("%d",&e);
printf("\n");
printf("加入元素后栈的值为:");
stack s1=push(s,e);
print(s1);
printf("\n");
printf("弹出的元素值为:");
pop(&s1,&e);
printf("%d",e);
printf("\n");
printf("弹出元素后栈的值为:");
print(s1);
}
队列的建立,插入,删除以及输出操作。
输入:队列的各个结点的值,要插入的结点的值。
输出:队列的各个结点的值,插入元素后队列的各个结点的值,弹出的元素值,弹出元素后队列的各个结点的值。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
#include <stdbool.h>
#define maxsize 100
typedef struct {
int data[maxsize];
int front;
int rear;
}sequene;
sequene initquene(){
sequene q;
q.front=-1;
q.rear=-1;
printf("请输入队列的值");
int num;
scanf("%d",&num);
while(num!=-1){
q.rear++;
q.data[q.rear]=num;
scanf("%d",&num);
}
return q;
}
int print(sequene q){
if(q.front==q.rear){
printf("队列为空 ");
return NULL;
}
int i=0;
while(q.front!=q.rear){
q.front++;
printf("%d ",q.data[q.front]);
}
}
void enquene(sequene *q,int e){
if((q->rear-q->front)==maxsize){
printf("队列已满");
return 0;
}
q->rear++;
q->data[q->rear]=e;
}
void outquene(sequene *q,int *e){
if(q->rear==q->front){
printf("队列为空");
return 0;
}
*e=q->data[q->front];
q->front++;
}
int main(){
sequene q=initquene();
printf("队列:");
print (q);
int num;
printf("\n");
printf("要插入的值为:");
printf("\n");
scanf("%d",&num);
enquene(&q,num);
printf("队列:");
print(q);
printf("弹出的值为:");
printf("\n");
outquene(&q,&num);
printf("%d",num);
printf("\n");
printf("队列:");
print(q);
}
两个数组共有以及不共有的元素
输入:两个数组各自的长度以及值。
输出:两个数组的值,两个数组共有的值,两个数组不共有的值。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<stdlib.h>
#include <stdbool.h>
#define maxsize 5
int main (){
int n,m;
printf("输入的第一个数组的数字个数");
scanf("%d",&n);
int a[n];
int i=0;
int num;
while(i<n){
printf("a[%d]的值",i);
scanf("%d",&num);
a[i]=num;
i++;
}
printf("输入的第二个数组的数字个数");
scanf("%d",&m);
int b[m];
i=0;
while(i<m){
printf("b[%d]的值",i);
scanf("%d",&num);
b[i]=num;
i++;
}
i=0;
while(i<n){
printf("\n");
printf("a[%d]的值%d",i,a[i]);
i++;
}
i=0;
while(i<m){
printf("\n");
printf("b[%d]的值%d",i,b[i]);
i++;
}
int c[n+m];
int q,w,e=0;
for(q=0;q<n;q++){
for(w=0;w<m;w++){
if(a[q]==b[w]){
c[e]=a[q];
e++;
break;
}
}
}
int p=0;
printf("相同的值为:");
while(p<e){
printf("\n");
printf("%d ",c[p]);
p++;
}
int j;
printf("不同的值为:");
for(i=0;i<n;i++){
for(j=0;j<e;j++){
if(a[i]!=c[j]){
printf("%d ",a[i]);
}
}
}
for(i=0;i<m;i++){
for(j=0;j<e;j++){
if(b[i]!=c[j]){
printf("%d ",b[i]);
}
}
}
}
求矩阵各行元素之和
输入:m*n的矩阵的值。
输出:每行输出对应矩阵行元素之和。
优化目标:可能没有优化目标。
#include<stdio.h>
#include<stdlib.h>
#include <stdbool.h>
#define maxsize 5
#include<string.h>
#include<string.h>
int main()
{
int m,n,k,sum=0;
scanf("%d%d",&m,&n);
int a[m][n];
int i,j;
for(i=0;i<m;i++)
for( j=0;j<n;j++)
scanf("%d",&a[i][j]);
for( i=0;i<m;i++)
{
sum=0;
for( j=0;j<n;j++)
sum+=a[i][j];
printf("%d\n",sum);
}
return 0;
}
今天复习了栈和队列的一些基本操作,复习了一些数组的内容,明天也会继续复习数组和字符串的内容。