struct snode *likstack likstack &s likstack s 这两个区别
时间: 2024-04-17 10:29:03 浏览: 60
这两个代码的区别如下:
1. `likstack &s`:这段代码声明了一个引用变量 `s`,它引用了 `likstack` 指针。这意味着对 `s` 的修改会直接影响到 `likstack` 指针所指向的内存区域。
2. `likstack s`:这段代码声明了一个新的指针变量 `s`,它与 `likstack` 指针是两个独立的指针。它们指向的内存区域可能是相同的,但对其中一个指针的修改不会影响到另一个指针。
总之,第一种情况是使用引用传递,可以直接修改原始指针的值。而第二种情况是创建了一个新的指针变量,它与原始指针是独立的,修改其中一个不会影响到另一个。
相关问题
补全链表栈代码typedef struct SNode{ ElemType data; struct SNode *next; }SNode, *Stack; Status IsEmpty(Stack S)
{
return S == NULL;
}
Status Push(Stack *S, ElemType e)
{
SNode *p = (SNode*)malloc(sizeof(SNode));
if (!p)
return ERROR;
p->data = e;
p->next = *S;
*S = p;
return OK;
}
Status Pop(Stack *S, ElemType *e)
{
if (IsEmpty(*S))
return ERROR;
SNode *p = *S;
*e = p->data;
*S = p->next;
free(p);
return OK;
}
Status GetTop(Stack S, ElemType *e)
{
if (IsEmpty(S))
return ERROR;
*e = S->data;
return OK;
}
//定义栈结点 typedef struct SNode{ //定义单链表结点类型 int data; //每个节点存放一个数据元素 struct SNode *next; //指针指向下一个节点 }SNode, *LiStack;
这段代码定义了一个栈结点的结构体。其中,使用了 `typedef` 关键字来为结构体类型定义了两个新的名称:`SNode` 和 `LiStack`。
`SNode` 结构体定义了一个单链表结点类型,它包含两个成员:`data` 和 `next`。`data` 用于存放节点的数据元素,`next` 是一个指向下一个节点的指针。
`LiStack` 是一个指针类型,它被定义为 `struct SNode*`,即指向 `SNode` 结构体的指针类型。这样,使用 `LiStack` 可以方便地声明栈结点的指针变量。
综合起来,这段代码定义了一个栈结点的结构体 `SNode`,以及一个指向栈结点的指针类型 `LiStack`。通过使用这两个新的类型名称,我们可以更方便地操作栈结点。
阅读全文