有大神说下面如果改成那样是不行的,但
typedef struct node
{
int data;
struct node *next;
}*LinkList;这一段小代码为啥可以有*
#include<stdio.h>
#include<stdlib.h>
#define StackInitSize 100
typedef struct
{int data[StackInitSize];
int top;
}SeqStack; ###如果我把这里改成*SeqStack,那么后面的代码要怎么修改,谢谢
SeqStack *InitStack(){
SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack));
if(s!=NULL)
{
s->top=-1;
return s;
}else {printf("没空间\n");
exit(0);
}
}
int isempty(SeqStack *s)
{
return (s->top==-1)?1:0;
}
void push(SeqStack *s,int x)
{
if(s->top==StackInitSize)
{printf("栈满了");exit(0);
}else {s->top++;
s->data[s->top]=x;
}return;
}
int pop(SeqStack *s)
{
int temp;
if(isempty(s))
{printf("kong");
exit(0);
}else {temp=s->data[s->top];
s->top--;
return temp;
}
}
void conversion(int N,int r)
{
SeqStack *s;
int x;
char c;
s=InitStack();
while(N!=0){
push(s,N%r);
N=N/r;}
while(!isempty(s))
{
x=pop(s);
if (x<10)
{
printf("%d",x);}else
printf("%x",x);
}printf("\n");
}
int main(){
int X,r;
printf("输入十进制的整数:");
scanf("%d",&X);
while(X!=0)
{
printf("输入转换进制数:");
scanf("%d",&r);
printf("结果是:");
conversion(X,r);
printf("输入十进制的数:");
scanf("%d",&X);}
}
typedef struct
{ int data[StackInitSize];
int top;
}SeqStack;
这个是定义结构体类型,声明我这有一个新的结构体,名字叫SeqStack(跟int
char类似)。而不是变量。那么对于定义一个struct 是不能定义成 struct * 的变量的。你可以理解为,这个跟int一样。定义变量 (
int a; ) <==>( struct SeqStack a;)
你直接可以用struct SeqStack *a;这样定义变量。 类似于int *a。
你仔细看看,struct 后面多了个node typedef struct node {}* node
这个第一个node是struct类型 第二个node是(struct node * )变量
你的可以改成typedef struct{
int data[StackInitSize];int top;}SeqStack *SeqStack;
或者 typedef struct SeqStack {int data[StackInitSize];int top;}*SeqStack;