단 방향 링크 (헤드 삽입 법, 꼬리 삽입 법) (선두 노드, 선두 노드 없 음) 생 성
5320 단어 C 언어 회고
/*********************************************************************************
* Copyright: (C) 2019 yyyyf
* All rights reserved.
*
* Filename: .cpp
*
* Description: This file
*
* Version: 1.0.0(2019 07 25 )
*
* Author: yyyyf <[email protected]>
*
* ChangeLog: 1: 2019.08.21
* 2: 2019.08.22
*
*
********************************************************************************/
#include
#include
/********************************************************************************
*
********************************************************************************/
typedef struct Linklist{
int data;
struct Linklist* next;
}Linklist;
/********************************************************************************
* : headcreate_1
* : ( )
* :
* :
*********************************************************************************/
Linklist* headcreate_1 (int n)
{
Linklist* head,* node,* end;
//
head = (Linklist* )malloc(sizeof(Linklist));
//
end = head;
end->data = 0;
//while
while(n > 0)
{
//
node = (Linklist* )malloc(sizeof(Linklist));
// data
node->data = n;
if(end)
//
end->next = node;
//
end = node;
n--;
}
//
end->next = NULL;
//
return head;
}
/********************************************************************************
* : headcreate_2
* : ( )
* :
* :
*********************************************************************************/
Linklist* headcreate_2 (int n)
{
Linklist* head,* node;
//
head = (Linklist* )malloc(sizeof(Linklist));
//
head->next = NULL;
while( n > 0 )
{
//
node = (Linklist* )malloc(sizeof(Linklist));
// data
node->data = n;
//
node->next = head->next;
//
head->next = node;
n--;
}
return head;
}
/********************************************************************************
* : noheadcreate_1
* : ( )
* :
* :
*********************************************************************************/
Linklist* noheadcreate_1 (int n)
{
Linklist* head,* node,* end;
head = NULL;
for ( int i = 1;i <= n;n-- )
{
//
node = (Linklist* )malloc(sizeof(Linklist));
// data
node->data = n;
//if
if( head == NULL )
{
//
head = node;
end = head;
//
continue;
}
//
end->next = node;
//
end = node;
}
//
end->next = NULL;
//
return head;
}
/********************************************************************************
* : noheadcreate_2
* : ( )
* :
* :
*********************************************************************************/
Linklist* noheadcreate_2 (int n)
{
Linklist* head,* node,* end;
//
end = (Linklist* )malloc(sizeof(Linklist));
//
end->next = NULL;
// data
end->data = n--;
//
head =(Linklist* )malloc(sizeof(Linklist));
//
head->next = end;
for(int i = 0;n > i;n--)
{
//
node = (Linklist* )malloc(sizeof(Linklist));
// data
node->data = n;
//
node->next = head->next;
//
head->next = node;
}
//
head = node;
return head;
}
/********************************************************************************
* : headprintlist
* :
* :
* :
*********************************************************************************/
void headprintlist(Linklist* node)
{
Linklist *temp = node;
// node
while( temp->next != NULL )
{
// ,
temp = temp->next;
printf("%d ",temp->data);
}
printf("
");
}
/********************************************************************************
* : noheadprintlist
* :
* :
* :
*********************************************************************************/
void noheadprintlist(Linklist* node)
{
Linklist *temp = node;
// temp
while( temp != NULL )
{
// ,
printf("%d ",temp->data);
temp = temp->next;
}
printf("
");
}
/********************************************************************************
* :
* : main
* :
* : 0
*********************************************************************************/
int main(int argc,char const* argv[])
{
int n;
scanf("%d",&n);
//headprintlist(headcreate_1(n));
//headprintlist(headcreate_2(n));
//noheadprintlist(noheadcreate_1(n));
//noheadprintlist(noheadcreate_2(n));
system("pause");
return 0;
}