선형 표싱글 체인 시트 의 기본 조작
2272 단어 데이터 구조
typedef int ElementType;
typedef struct LNode* LinkList;
typedef struct LNode* PtrToNode;
typedef struct LNode
{
ElementType data;
PtrToNode next;
} LNode;
LinkList CreateLinkList(int n); // n
PtrToNode FindByPos(LinkList l, int pos); //
PtrToNode FindByValue(LinkList l, ElementType value); //
void Insert(LinkList l, ElementType x, int pos); //
void Delete(LinkList l, int pos); //
LinkList CreateLinkList(int n){
LinkList l;
PtrToNode tmpCell, tail;
l = (LinkList*)malloc(sizeof(LNode));
l->next = NULL;
ElementType data;
for(int i = 0; i < n; i++){
scanf("%d", &data);
tmpCell = (PtrToNode)malloc(sizeof(LNode));
tmpCell->data = data;
tmpCell->next = NULL;
if(i == 0)
l->next = tmpCell;
else
tail->next = tmpCell;
tail = tmpCell;
}
return l;
}
PtrToNode FindByPos(LinkList l, int pos)
{
int i = 1;
LinkList p = l->next;
while(p && i < pos)
{
p = p->next;
i++;
}
if(i == pos)
return p;
return NULL;
}
PtrToNode FindByValue(LinkList l, ElementType value)
{
LinkList p = l->next;
while(p && p->data != value)
p = p->next;
return p;
}
void Insert(LinkList l, ElementType x, int pos)
{
PtrToNode node = (PtrToNode)malloc(sizeof(LNode));
node->data = x;
node->next = NULL;
if(pos == 1)
{
node->next = l->next;
l->next = node;
}
else
{
PtrToNode pre = FindByPos(l, pos - 1);
if(!node)
return;
else
{
node->next = pre->next;
pre->next = node;
}
}
}
void Delete(LinkList l, int pos){
PtrToNode tmpCell;
if(pos == 1){
tmpCell = l->next;
l->next = tmpCell->next;
}
else{
PtrToNode pre = FindByPos(l, pos - 1);
if(!pre || !pre->next)
return;
else{
tmpCell = pre->next;
pre->next = tmpCell->next;
}
}
free(tmpCell);
tmpCell = NULL;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.