데이터 구조 --- 체인 스 택 실현
5888 단어 데이터 구조
여기 서 우 리 는 머리 삽입 과 머리 삭제 방법 을 선택한다. 왜냐하면 꼬리 삽입 과 꼬리 삭 제 는 모두 링크 를 옮 겨 다 녀 야 하기 때문에 시간 복잡 도가 비교적 높다.
비교 하지 않 고 코드 를 통 해 직접 보 여 줍 니 다.
구조 체 성명
typedef char LinkListType;
typedef struct LinkListStack{
struct LinkListStack* next;// ,
LinkListType data;// ,
}LinkListStack;
구체 적 함수 성명
//
void LinkListStackInit(LinkListStack** head);
//
void LinkListStackPush(LinkListStack** head,LinkListType value);
//
void LinkListStackPop(LinkListStack** head);
//
void DestroyNode(LinkListStack* node);
//
LinkListStack* CreateNode(LinkListType value);
//
int LinkListStackGetTop(LinkListStack* head,LinkListType* value);
초기 화 및 폐기
void LinkListStackInit(LinkListStack** head)
{
if(head==NULL){
//
return;
}
*head=NULL;
}
// free , , , ,
void DestroyNode(LinkListStack* node)
{
free(node);
}
창고 에 들 어 가 는 것 과 출고 하 는 것
// , ,
// , , next
LinkListStack* CreateNode(LinkListType value)
{
LinkListStack* newNode = (LinkListStack*)malloc(sizeof(LinkListStack));
newNode->next = NULL;
newNode->data = value;
return newNode;
}
//
// O(1),
void LinkListStackPush(LinkListStack** head,LinkListType value)
{
if(head == NULL)
{
//
return;
}
if(*head==NULL)
{
//
*head = CreateNode(value);
return;
}
LinkListStack* cur = CreateNode(value);
cur->next = *head;
*head = cur;
}
//
// O(1),
void LinkListStackPop(LinkListStack** head)
{
if(head==NULL)
{
//
return;
}
if(*head==NULL)
{
//
return;
}
LinkListStack* cur = *head;
*head=(*head)->next;
DestroyNode(cur);
}
스 택 상단 요 소 를 꺼 내 는 것 도 출력 형 매개 변수 가 필요 합 니 다.
int LinkListStackGetTop(LinkListStack* head,LinkListType* value)
{
if(head==NULL){
//
return 0;
}
*value = head->data;
return 1;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.