삽 입 된 단일 체인 시트 를 추가 삭제 하고 수정 할 수 있 습 니 다 (1)
linklist.h
#pragma once
typedef char LinkNodeType;
typedef struct LinkNode{
LinkNodeType data;
struct LinkNode* next;
}LinkNode;
typedef LinkNode* PLinkNode;
void LinkListInit(PLinkNode*);
void LinkListDestory(PLinkNode*);
void LinkListPushBack(LinkNode** phead,LinkNodeType value);
void LinkListPopBack(LinkNode** phead);
void LinkListPushFront(LinkNode** phead,LinkNodeType value);
void LinkListPopFront(LinkNode** phead);
void LinkListInsert(LinkNode* pos,LinkNodeType value);
void LinkListInsertBefore(LinkNode* pos,LinkNodeType value);
void LinkListInsertBefore2(LinkNode* pos,LinkNodeType value);
void LinkListErase(LinkNode** phead,LinkNode* pos);
void LinkListErase2(LinkNode** phead,LinkNode* pos);
LinkNode* LinkListFind(LinkNode* head,LinkNodeType to_find);
linklist.c
#include
#include
#include
void linkNode* CreatNode(LinkNodeType value){
LinkNode* new_node = (LinkNode*)malloc(sizeof(LinkNode));
new_node->data = value;
new_node->next = NULL;
return new_node;
}
void DestroyNode(LinkNode* node){
free(node->data);
free(node);
}
void LinkListInit(PLinkNode* node){
*node = NULL;
}
void LinkListDestory(PLinkNode* phead){
(void)phead;
}
void LinkListPushBack(LinkNode** phead,LinkNodeType value){
if(phead == NULL){
return;
}
if(*phead == NULL){
*phead = CreatNode(value);
return;
}
LinkNode* cur = *phead;
while(cur != NULL){
cur = cur->next;
}
LinkNode* new_node = CreatNode(value);
cur->next = new_node;
return;
}
void LinkListPopBack(LinkNode** phead);{
if(phead == NULL){
return;
}
if(*phead == NULL){
return;
}
if((*phead)->next == NULL){
DestoryNode(*phead);
*phead = NULL;
return;
}
LinkNode* cur = *phead;
LinkNode* pre = NULL;
while(cur->next != NULL){
pre = cur;
cur = cur->next;
}
pre->next = NULL;
DestoryNode(cur);
return;
}
void LinkListPushFront(LinkNode** phead,LinkNodeType value){
if(phead == NULL){
return;
}
if(*phead == NULL){
LinkNode* new_node = CreatNode(value);
new_node->next = *phead;//KAN JIANGJIE
}
}
void LinkListPopFront(LinkNode** phead){//toushan
if(phead == NULL){
return;
}
if(*phead == NULL){
return;
}
LinkNode* to_erase = *phead;
*phead = (*phead)->next;
DestroyNode(to_erase);
return;
}
void LinkListInsert(LinkNode* pos,LinkNodeType value){
if(pos == NULL){
return;
}
LinkNode* new_node = CreatNode(value);
new_node->next = pos->next;
pos->next = new_node;
return;
}
void LinkListInsertBefore(LinkNode** phead,LinkNode* pos,LinkNodeType value){
if(phead == NULL || pos == NULL){
return;
}
if(*phead == pos){
LinkListPushFront(phead,value);
return;
}
LinkNode* cur = *phead;
for(;cur != NULL;cur = cur->next){
if(cur->next == pos){
break;
}
if(cur == NULL){
return;
}
LinkListInsert(cur,value);
return;
}
void LinkListInsertBefore2(LinkNode* pos,LinkNodeType value){
if(pos == NULL){
return;
}
LinkListInsert(pos,pos->data);
pos->data = value;
LinkNode* new_node = CreatNode(pos->data);
//new_node->next = pos->next;
//pos->next = new_node;
//pos->data = value;
return;
}
void LinkListErase(LinkNode** phead,LinkNode* pos){
if(phead == NULL || pos == NULL){
return;
}
if(*phead == NULL){
return;
}
LinkNode* cur = *phead;
for(;cur != NULL;cur = cur->next){
if(cur->next == pos){
break;
}
}
if(cur == NULL){
return;
}
cur->next = pos->next;
DestroyNode(pos);
return;
}
void LinkListErase2(LinkNode** phead,LinkNode* pos){
if(phead == NULL || pos == NULL){
return;
}
if(*phead == NULL){
return;
}
if(pos->next == NULL){
//zuihouyigeyuansu,zhinengshiyong weishan
LinkListPopBack(phead);
return;
}
pos->data = pos->next->data;
LinkNode* to_erase = pos->next;
pos->next = to_erase->next;
DestroyNode(to_erase);
return;
}
LinkListFind(LinkNode* head,LinkNodeType to_find){
if(head == NULL){
return;
}
LinkNode* cur = head;
while(cur != NULL){
if(cur->data == to_find){
return cur;
}
cur = cur->next;
}
return NULL;
}
마음 에 드 시 면 저 에 게 좋아요 를 눌 러 주세요. 제 코드 가 잘못 되 었 거나 개선 건의 가 있 으 면 메 시 지 를 남 겨 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode 148. Sort 리스트 링크 정렬일정한 공간 복잡성 을 사용 하여 O (n log n) 시간 에 연 결 된 목록 을 정렬 합 니 다. 제목 링크 제목 의 대 의 는 하나의 링크 를 정렬 하고 복잡 도 는 O (nlogn) 안에 있다.사고방식 은 내...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.