数据结构经典算法 C语言版
int i,x,m,n;
int a;
SetNull(&f,&r); /*清空队列*/
printf("请输入队列的元素个数:\n");
scanf("%d",&m);
printf("输入队列的数据:\n");
for (i=0; i<m; i++)
{
i=i;
scanf("%d",&x);
a = EnQueue(q,x,&f,&r);
char job[10];
};
struct Data SDatas[NUM]=
{
"Sun","Weifang","Male","24","student",
"Tom","Beijing","Male","31","doctor",
"Marry","Shanghai","Female","19","techer",
{
int a,b;
char s[80];
p = (int *)malloc(Max*sizeof(int));
if(!p)
{
printf("分配内存失败");
exit(1);
}
tos = p;
bos = p + Max -1;
printf("请输入第一个数据:\n");
scanf("%d",&a);
}
if(Empty(&f,&r) == 1)
printf("队列为空");
else
printf("队列中还有%d个数据",(m-n));
printf("\n");
}
//二分法查找
struct Data
{
char name[20];
char city[20];
char sex[10];
char age[10];
"Willing","Tianjing","Female","21","worker"
};
void qs_struct(items,left,right);
void quick_struct(items,count);
int BinarySeach(items,name,n);
void print_BinarySeachData(point);
push(a);
printf("请输入第二个数据:\n");
scanf("%d",&b);
push(b);
printf("请输入操作符:\n");
scanf("%s",s);
switch (*s)
{
case '+':
a = pop();
b = pop();
printf("结果是a+b = %d\n",(a+b));
printf("排序后:");
for(i=0;i<6;i++)
{
printf("%4d",a[i]);
}
printf("\n");
}
//冒泡排序法
void BubbleSort()
push(a+b);
break;
case '-':
a = pop();
b = pop();
printf("结果是a-b = %d\n",(a-b));
push(a-b);
break;
case '*':
a = pop();
b = pop();
printf("结果是a*b = %d\n",(a*b));
}
void heap(int n)
{
int i,j,t;
for(i =n/2;i>0;i--)
adjust(i,n);
printf("\n初始化成堆===> ");
for(i = 1;i < 8;i++)
printf("%5d",a[i]);
for(i = n-1;i>0;i--)
{
t = a[i+1];
//插入排序法
void InsertSort()
{
int s[100];
int n,m,j,i=0,temp1,temp2;
printf("请输入待排序的元素个数:");
scanf("%d",&n);
printf("请输入原序列:");
for (i=0; i<n; i++)
{
scanf("%d",&s[i]);
printf("%5d",a[i]);
heap(7);
printf("\n排序后的数据为:");
for(i = 1;i<8;i++)
printf("%5d",a[i]);
printf("\n");
}
//堆栈的基本应用
int *p;
int *tos;
int *bos;
/*添加一个数据放到堆栈对顶端*/
if(*front == *rear)
{
printf("队列发生上溢\n");
return(-1);
}
else
{
q[*rear] = x;
return(0);
}
}
int DelQueue(int q[],int *y,int *front,int *rear)
{
*front = (*front +1)%Max;
if(i == -1)
{
printf("没有查找到该人信息\n");
return 0;
}
printf("查找结果:\n");
print_BinarySeachData(&SDatas[i]);
}
void quick_struct(struct Data items[],int count)
{
qs_struct(items,0,count-1);
for(i=0;i<7;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
printf("排序前:");
for(i=0;i<6;i++)
{
printf("%4d",a[i]);
}
printf("\n");
quickSort(a,0,7);/**//*排好序的结果*/
{
while((strcmp(items[i].name,x)<0)&&(i<right))
i++;
while((strcmp(items[j].name,x)>0)&&(j>left))
j--;
if(i<=j)
{
temp = items[i];
items[i] = items[j];
items[j] = temp;
if(j>i)
a[j--]=a[i];
}
a[i]=temp;
quickSort(a,left,i-1);/**//*递归左边*/
quickSort(a,i+1,right);/**//*递归右边*/
}
void quickSortMain()
{
int a[7];
int i;
printf("请输入7个待排序的整数:\n");
{
*front = 0;
*rear = 0;
}
int Empty(int *front,int *rear)
{
if(*front == *rear)
return(1);
else
return(0);
}
int EnQueue(int q[],int x,int *front,int *rear)
{
*rear = (*rear+1) % Max;
void BinarySearchMain()
{
char name[30];
int i;
printf("将原始数据排序\n");
quick_struct(SDatas,NUM);
printf("请输入要查找人的名字:\n");
scanf("%s",name);
i = BinarySeach(SDatas,name,NUM);
if(*front == *rear)
{
printf("队列发生下溢\n");