데이터 구조 - 체인 식 저장 구조 - 단 방향 링크
4308 단어 데이터 구조 와 알고리즘c
//linkedlist.c
#include
#include
//
typedef struct node{
int data; //
struct node *next; //
// linklist_t* next;//
}linklist_t;
//
linklist_t* create_linklist()
{
linklist_t* list=malloc(sizeof(linklist_t));
list->next=NULL;// NULL
return list;
}
//
int isnull_linklist(linklist_t* list)
{
if(list==NULL)
return 0;
return list->next==NULL;
}
//
int insert_linklist(linklist_t* list,int data)
{
//1
if(list==NULL)
return -1;
//2
linklist_t* newnode=create_linklist();
newnode->data=data;
//3
newnode->next=list->next;
//4
list->next=newnode;
return 0;
}
//
int delete_linklist(linklist_t* list)
{
//1
if(list==NULL||isnull_linklist(list))
return -1;
//2
linklist_t* temp=list->next;
//3
//list->next=list->next->next;
list->next=temp->next;
free(temp);
return 0;
}
//
//1.
//2.
// , , 。
linklist_t* locate_linklist(linklist_t* list,int data)
{
//1
if(list==NULL||isnull_linklist(list))
return NULL;
//2
while(list->next!=NULL)
{
if(list->next->data==data)
return list;
list=list->next;
}
return NULL;
}
//
int change_linklist(linklist_t* list,int data)
{
if(list==NULL||isnull_linklist(list))
return -1;
list->next->data=data;
return 0;
}
//
int print_linklist(linklist_t* list)
{
//1
if(list==NULL||isnull_linklist(list))
return -1;
//2
while(list->next!=NULL)
{
printf("%3d ",list->next->data);
list=list->next;
}
printf("
");
return 0;
}
// 1
void re_print_linlist_digui(linklist_t* list)
{
if(list->next==NULL)
return ; // void return ;
re_print_linlist_digui(list->next);
printf("%3d ",list->next->data);
return ;//
}
//
int length_linklist(linklist_t* list)
{
//1
if(list==NULL||isnull_linklist(list))
return 0;
int sum=0;
//2
while(list->next!=NULL)
{
sum++;
list=list->next;
}
return sum;
}
//
int clear_list(linklist_t* list)
{
if(list==NULL||isnull_linklist(list))
return -1;
while(!isnull_linklist(list))//while(length_linklist(list))//while(list->next!=NULL)
{
delete_linklist(list);
}
return 0;
}
//
int destroy_linklist(linklist_t* list)
{
if(list==NULL)
return -1;
if(!isnull_linklist(list))
clear_list(list);
free(list);
return 0;
}
// 2
//
//
//
// ? ? --》
//
//
// ?
//
// : 1.2.3.。。。。20
// 20 。19.。。。。3.2.1
//
// -》1.2.3.。。20 ?
int re_print_linlist_guohechaiqiao(linklist_t* list)
{
//1
if(list==NULL||isnull_linklist(list))
return -1;
linklist_t* temp=create_linklist();
//
//
while(list->next!=NULL)
{
insert_linklist(temp,list->next->data);
list=list->next;
}
print_linklist(temp);
destroy_linklist(temp);
return 0;
}
int main(int argc, const char *argv[])
{
linklist_t* list=create_linklist();//
int i;
for(i=1;i<=20;i++)
{
insert_linklist(list,i*10);
print_linklist(list);
}
change_linklist(locate_linklist(list,150),888);
print_linklist(list);
insert_linklist(locate_linklist(list,888),150);
print_linklist(list);
delete_linklist(locate_linklist(list,888));
print_linklist(list);
re_print_linlist_digui(list);
printf("
");
re_print_linlist_guohechaiqiao(list);
printf("length_linklist %d
",length_linklist(list));
clear_list(list);
printf("length_linklist %d
",length_linklist(list));
destroy_linklist(list);
#if 0
for(i=1;i<=20;i++)
{
delete_linklist(list);
print_linklist(list);
}
#endif
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JAVA] 배열 회전 출력요소 가 출력 을 시작 하 는 위치 에 주의 하 십시오. 모두 몇 라운드 의 수출 이 있 습 니까? n/2 + 1 매 라 운 드 는 상, 우, 하, 좌 로 나 뉜 다. 각 방향의 시작 위치 와 좌표 의 관 계 를 구...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.