不带头结点
#include "stdio.h"
#include "stdlib.h"
typedef struct List {
int data; //数据域
struct List *next; //指针域
} List;
List * HeadCreatList() //头插法建立链表,不带头结点
{
List *s; //不用像尾插法一样生成一个终端节点。
List *head=NULL;
for (int i = 0; i < 10; i++) {
s = (struct List*) malloc(sizeof(struct List));
s->data = i;
s->next = head; //将L指向的地址赋值给S;//头插法与尾插法的不同之处主要在此,
//s所指的新节点的指针域next指向L中的开始节点
head = s; //头指针的指针域next指向s节点,使得s成为开始节点。
}
return head;
}
List * TailCreatList() //尾插法建立链表,不带头结点
{
List *head,*r;
List *s;
head=NULL;
r=head;
for (int i = 0; i < 10; i++) {
s = (struct List*) malloc(sizeof(struct List));
s->data = i;
if(head ==NULL)
{
head=s;
r=s;
continue;
}
r->next=s; //将L指向的地址赋值给S;//头插法与尾插法的不同之处主要在此,
//s所指的新节点的指针域next指向L中的开始节点
r = s; //头指针的指针域next指向s节点,使得s成为开始节点。
}
if( r!=NULL)
r->next = NULL;
return head;
}
void DisPlay(List *L) { //打印节点
List *p = L;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
List *head=NULL,*head1=NULL;
head=HeadCreatList();
DisPlay(head);
head1=TailCreatList();
DisPlay(head1);
}
带头结点
#include "stdio.h"
#include "stdlib.h"
typedef struct List {
int data; //数据域
struct List *next; //指针域
} List;
List * HeadCreatList() //头插法建立链表,带头结点
{
List *s; //不用像尾插法一样生成一个终端节点。
List *head=(struct List*) malloc(sizeof(struct List));
head->next=NULL;
for (int i = 0; i < 10; i++) {
s = (struct List*) malloc(sizeof(struct List));
s->data = i;
s->next = head->next; //将L指向的地址赋值给S;//头插法与尾插法的不同之处主要在此,
//s所指的新节点的指针域next指向L中的开始节点
head->next = s; //头指针的指针域next指向s节点,使得s成为开始节点。
}
return head;
}
List * TailCreatList() //尾插法建立链表,带头结点
{
List *head,*r;
List *s;
head=(struct List*) malloc(sizeof(struct List));
head->next;
r=head;
for (int i = 0; i < 10; i++) {
s = (struct List*) malloc(sizeof(struct List));
s->data = i;
r->next=s; //将L指向的地址赋值给S;//头插法与尾插法的不同之处主要在此,
//s所指的新节点的指针域next指向L中的开始节点
r = s; //头指针的指针域next指向s节点,使得s成为开始节点。
}
if( r!=NULL)
r->next = NULL;
return head;
}
void DisPlay(List *L) { //打印节点
List *p = L->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
List *head=NULL,*head1=NULL;
head=HeadCreatList();
DisPlay(head);
head1=TailCreatList();
DisPlay(head1);
}