链表首接法,尾插法创建,以及两种方法的区别,输出效果的不同。
首接法:
//结构体创建
typedef struct node
{
char data;
struct node *next;
}Node,*List;
List creatlist()
{
char ch;//定义一个待输入变量
List head,p;//定义一个头节点(头指针),一个循环节点
head=(List)malloc(sizeof(Node));//给头节点分配空间
head->next =NULL;//将头节点next赋值为空
ch=getchar( ); //输入ch 的内容
while (ch!='\n')
{
//给p指针分配空间
p=(List)malloc(sizeof(Node));
//以下三行为核心代码
p->data=ch;
p->next=head->next;
head->next=p;
//循环输入ch的值
ch=getchar( );
}
return head;
}
首接法效果:
输入 :1,2,3,4,5
输出 :5,4,6,2,1
尾插法:
//结构体创建
typedef struct node
{
char data;
struct node *next;
}Node,*List;
List creatlist()
{
char ch;
List head,tail,p;//定义头指针,尾指针,循环指针
tail = (List)malloc(sizeof(Node));
tail->next =NULL;
head = tail
ch = getchar( );
while (ch!='\n')
{
p=(List)malloc(sizeof(Node));
//下四行核心代码
p->data=ch;
p->next=tail->next;
tail->next=p;
tail = p
ch=getchar( );
}
return head;
}
尾插法效果:
输入 :1,2,3,4,5
输出 :1,2,3,4,5
尾插法在形式上何首接法类似,在核心代码上比首接法多一句,定义节点时多定义一个尾节点.
在效果上,首接法会逆序输出输入的内容,而尾插法则是正序输出输入的内容。