更新 'ex3_1.c'
This commit is contained in:
parent
7de204451e
commit
8a91eacb4c
58
ex3_1.c
58
ex3_1.c
@ -13,12 +13,12 @@ typedef struct {
|
||||
int top; // 栈顶指针
|
||||
}SqStackChar;
|
||||
|
||||
void initStack(SqStack *L){
|
||||
void InitStack(SqStack *L){
|
||||
L->top = -1;
|
||||
printf("\n初始化成功\n");
|
||||
}
|
||||
int Push(SqStack *L, DataType e){
|
||||
if(L->top==MAX-1){
|
||||
if(L->top == MAX-1){
|
||||
return 0;
|
||||
} else {
|
||||
L->top++;
|
||||
@ -27,7 +27,7 @@ int Push(SqStack *L, DataType e){
|
||||
}
|
||||
}
|
||||
int Pop(SqStack *L, DataType *e){
|
||||
if(L->top==-1){
|
||||
if(L->top ==- 1){
|
||||
return 0;
|
||||
} else {
|
||||
*e=L->data[L->top];
|
||||
@ -36,7 +36,7 @@ int Pop(SqStack *L, DataType *e){
|
||||
}
|
||||
}
|
||||
int GetTop(SqStack *L, DataType *e){
|
||||
if(L->top==-1){
|
||||
if(L->top == -1){
|
||||
return 0;
|
||||
} else {
|
||||
*e=L->data[L->top];
|
||||
@ -44,14 +44,14 @@ int GetTop(SqStack *L, DataType *e){
|
||||
}
|
||||
}
|
||||
int StackEmpty(SqStack L){
|
||||
if(L.top==-1){
|
||||
if(L.top == -1){
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
int StackFull(SqStack L){
|
||||
if(L.top==MAX-1){
|
||||
if(L.top == MAX-1){
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@ -59,13 +59,13 @@ int StackFull(SqStack L){
|
||||
}
|
||||
void OutputStack(SqStack L){
|
||||
printf("\n\n");
|
||||
for(int i=0;i<L.top+1;i++){
|
||||
printf("第 %d 个元素的值为:%d\n",i+1,L.data[i]);
|
||||
for(int i=0; i<L.top+1; i++){
|
||||
printf("第 %d 个元素的值为:%d\n", i+1, L.data[i]);
|
||||
}
|
||||
printf("\n\n");
|
||||
}
|
||||
int insertStack(SqStack *L, int i, DataType e){
|
||||
if(L->top==MAX-1){
|
||||
int InsertStack(SqStack *L, int i, DataType e){
|
||||
if(L->top == MAX-1){
|
||||
return 0;
|
||||
} else {
|
||||
// 验证位置
|
||||
@ -73,7 +73,7 @@ int insertStack(SqStack *L, int i, DataType e){
|
||||
return 0;
|
||||
}
|
||||
// 将 i 及其以后的元素向后移动 1 个单位
|
||||
for(int j=L->top+1;j<i-1;j--){
|
||||
for(int j=L->top+1; j<i-1; j--){
|
||||
L->data[j] = L->data[j-1];
|
||||
}
|
||||
// 插入
|
||||
@ -82,11 +82,11 @@ int insertStack(SqStack *L, int i, DataType e){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
int DeleteList1(SqStack *L, DataType e){
|
||||
for(int i=0;i<L->top+1;i++){
|
||||
int DeleteListData(SqStack *L, DataType e){
|
||||
for(int i=0; i<L->top+1; i++){
|
||||
if(L->data[i]==e){
|
||||
// 将 i 以后的元素向前移动 1 个单位
|
||||
for(int j=i;j<L->top+1;j++){
|
||||
for(int j=i; j<L->top+1; j++){
|
||||
L->data[j]=L->data[j+1];
|
||||
}
|
||||
L->top--;
|
||||
@ -95,19 +95,19 @@ int DeleteList1(SqStack *L, DataType e){
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int DeleteList2(SqStack *L, int i){
|
||||
int DeleteListPos(SqStack *L, int i){
|
||||
// 验证位置
|
||||
if(i>L->top+1 || i<0){
|
||||
return 0;
|
||||
}
|
||||
// 将 i-1 以后的元素向前移动 1 个单位
|
||||
for(int j=i-1;j<L->top+1;j++){
|
||||
for(int j=i-1; j<L->top+1; j++){
|
||||
L->data[j]=L->data[j+1];
|
||||
}
|
||||
L->top--;
|
||||
return 1;
|
||||
}
|
||||
char num_to_char(int n){
|
||||
char NumToChar(int n){
|
||||
if(n>=0 && n<=9){
|
||||
return (char)('0'+n);
|
||||
} else {
|
||||
@ -115,7 +115,7 @@ char num_to_char(int n){
|
||||
}
|
||||
}
|
||||
int PushChar(SqStackChar *L, char e){
|
||||
if(L->top==MAX-1){
|
||||
if(L->top == MAX-1){
|
||||
return 0;
|
||||
} else {
|
||||
L->top++;
|
||||
@ -132,12 +132,12 @@ int PopChar(SqStackChar *L, char *e){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
void base(SqStackChar *L, int n, int e){
|
||||
void Base(SqStackChar *L, int n, int e){
|
||||
int i;
|
||||
char temp;
|
||||
// 转换
|
||||
while(e){
|
||||
PushChar(L, num_to_char(e%n)); // 进栈
|
||||
PushChar(L, NumToChar(e%n)); // 进栈
|
||||
e=e/n;
|
||||
}
|
||||
// 输出
|
||||
@ -152,12 +152,12 @@ void base(SqStackChar *L, int n, int e){
|
||||
}
|
||||
printf("\n\n");
|
||||
}
|
||||
void huiwen(SqStackChar *L, int e){
|
||||
void Palindrome(SqStackChar *L, int e){
|
||||
int i=1,n=e;
|
||||
char temp,temp1;
|
||||
// 转换
|
||||
while(n){
|
||||
PushChar(L, num_to_char(n%10)); // 进栈
|
||||
PushChar(L, NumToChar(n%10)); // 进栈
|
||||
n/=10;
|
||||
}
|
||||
// 比较
|
||||
@ -166,7 +166,7 @@ void huiwen(SqStackChar *L, int e){
|
||||
if(i==0){
|
||||
break;
|
||||
} else {
|
||||
temp1=num_to_char(e%10);
|
||||
temp1=NumToChar(e%10);
|
||||
e/=10;
|
||||
if(temp!=temp1){
|
||||
i=0;
|
||||
@ -186,7 +186,7 @@ int main(){
|
||||
SqStackChar L2;
|
||||
int n,choice;
|
||||
DataType e;
|
||||
initStack(&L1); // 初始化
|
||||
InitStack(&L1); // 初始化
|
||||
|
||||
for(;;){
|
||||
printf("\t\t1.入栈\n");
|
||||
@ -241,7 +241,7 @@ int main(){
|
||||
scanf("%d",&n);
|
||||
printf("请输入要插入的元素:");
|
||||
scanf("%d",&e);
|
||||
n=insertStack(&L1,n-1,e);
|
||||
n=InsertStack(&L1,n-1,e);
|
||||
if(!n){
|
||||
printf("插入失败,位置输入错误。\n");
|
||||
} else {
|
||||
@ -252,7 +252,7 @@ int main(){
|
||||
case 6:
|
||||
printf("请输入需要删除的元素的值:");
|
||||
scanf("%d",&e);
|
||||
n=DeleteList1(&L1,e);
|
||||
n=DeleteListData(&L1,e);
|
||||
if(n==0){
|
||||
printf("删除失败,元素不存在。\n");
|
||||
} else {
|
||||
@ -263,7 +263,7 @@ int main(){
|
||||
case 7:
|
||||
printf("请输入需要删除的元素的位置:");
|
||||
scanf("%d",&n);
|
||||
n=DeleteList2(&L1,n);
|
||||
n=DeleteListPos(&L1,n);
|
||||
if(n==0){
|
||||
printf("删除失败,位置不存在。\n");
|
||||
} else {
|
||||
@ -277,13 +277,13 @@ int main(){
|
||||
scanf("%d",&e);
|
||||
printf("请输入需要转换成的进制:");
|
||||
scanf("%d",&n);
|
||||
base(&L2,n,e);
|
||||
Base(&L2,n,e);
|
||||
break;
|
||||
case 9:
|
||||
L2.top = -1; // 初始化
|
||||
printf("请输入需要判断的回文数:");
|
||||
scanf("%d",&e);
|
||||
huiwen(&L2,e);
|
||||
Palindrome(&L2,e);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user