【发布时间】:2021-07-07 19:48:24
【问题描述】:
我想创建一个堆栈,但我想像链表实现一样保留头指针。我的意思是直接结束对面的堆栈。
void insertCustomer(CustomerPtr *headPtr, int id, char name[20], char surname[20]){
CustomerPtr newPtr = (CustomerPtr)malloc(sizeof(Customer));
newPtr->customerId = id;
strcpy(newPtr->customerName, name);
strcpy(newPtr->customerSurname, surname);
CustomerPtr previousPtr, currentPtr;
previousPtr = NULL;
currentPtr = *headPtr;
while(currentPtr != NULL){
previousPtr = currentPtr;
currentPtr = currentPtr->next;
}
if(previousPtr == NULL){
*headPtr = newPtr;
} else{
previousPtr->next = newPtr;
}
}
我遇到了分段错误。
【问题讨论】:
-
但是我遇到了分段错误
-
如果
customerName是char*,strcpy(newPtr->customerName, name);可能是分段错误的原因。 -
@berkay_K 这似乎是“我的意思是去头到尾相反的堆栈。”没有意义。如果你想实现一个堆栈那么新的节点,必须放在列表的开头。
标签: c linked-list stack