头插法:需要保证每次插入的新节点,都是链表的首节点。
尾插法:需要保证每次插入的新节点,都是链表的最后一个节点,且其指向的下一个节点为NULL
以下代码在 vs2010 上测试通过:
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#define TRUE 1
#define FALSE 0
typedef struct NODE{
int value;
struct NODE *next;
}Node;
//int link_create_tail(Node *link,int length);
int link_create_head(Node *list,int length);
int main(){
Node *link = NULL;
int length,result,cresult;
printf("请输入链表的长度:\n");
result = scanf("%d",&length);
if(result == 0){
return FALSE;
}
//cresult = link_create_tail(link,length);
cresult = link_create_head (link,length);
if(cresult == 1){
printf("长度为 %d 的链表创建成功\n",length);
}
system("pause");
return TRUE;
}
//单链表创建-》头插法
int link_create_head(Node *list,int length){
Node *new_node;
int i,number ,res;
list = (Node *)malloc(sizeof(Node));
list->next = NULL ;
if(list== NULL){
return FALSE;
}
for(i=0; i<length; i++){
printf("请输入数字:\n");
res = scanf("%d",&number);
if(res == NULL){
return FALSE;
}
new_node = (Node *)malloc(sizeof(Node));
new_node->value = number ;
new_node->next = list->next ;
list->next = new_node;
}
return TRUE ;
}
/*
//单链表创建-》尾插法
int link_create_tail(Node *list,int length){
Node *p;
Node *new_node;
int i,number,res;
list = (Node *)malloc(sizeof(Node));
p = list;
for(i = 0 ; i < length ; i++){
new_node = (Node *)malloc(sizeof(Node));
if(new_node == NULL){
return FALSE;
}
printf("请输入链表的值:\n");
res = scanf("%d",&number);
if(res == 0){
return FALSE;
}
new_node->value = number;
p->next = new_node;
p = new_node;
}
p->next = NULL;
return TRUE;
}
*/