單鏈表的建立(帶頭結點以及不帶頭結點)
不帶頭結點
#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);
}