頭插法和尾插法插入連結串列
阿新 • • 發佈:2019-01-02
#include "stdio.h"
#include "stdlib.h"
typedef struct List
{
int data;
struct List *next; //指標域
}List;
void HeadCreatList (List *L)
//頭插法建立連結串列
{ List *s;
L->next=NULL;
int i=0;
for (i;i<10;i++)
{
s=(struct List*)malloc(sizeof(struct List));
s->data=i;
s->next=L->next; //將L指向的地址賦值給S;
L->next=s;
}
}
void TailCreatList (List *L)
//尾插法建立連結串列
{ List *s,*m;
m=L;
int i=0;
for (i;i<10;i++)
{
s=(struct List*)malloc(sizeof(struct List));
s->data=i;
m->next=s;
m=m->next;
}
m->next=NULL;
}
void DisPlay(List *L)
{
List *p=L->next;
while(p!=NULL)
{
printf ("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main () {
List *L1,*L2;
L1=(struct List*)malloc(sizeof(struct List));
L2=(struct List*)malloc(sizeof(struct List));
HeadCreatList(L1);
DisPlay(L1);
TailCreatList(L2);
DisPlay(L2);
#include "stdlib.h"
typedef struct List
{
int data;
struct List *next; //指標域
}List;
void HeadCreatList (List *L)
//頭插法建立連結串列
{ List *s;
L->next=NULL;
int i=0;
for (i;i<10;i++)
{
s=(struct List*)malloc(sizeof(struct List));
s->data=i;
s->next=L->next; //將L指向的地址賦值給S;
L->next=s;
}
}
void TailCreatList (List *L)
//尾插法建立連結串列
{ List *s,*m;
m=L;
int i=0;
for (i;i<10;i++)
{
s=(struct List*)malloc(sizeof(struct List));
s->data=i;
m->next=s;
m=m->next;
}
m->next=NULL;
}
void DisPlay(List *L)
{
List *p=L->next;
while(p!=NULL)
{
printf ("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main () {
List *L1,*L2;
L1=(struct List*)malloc(sizeof(struct List));
L2=(struct List*)malloc(sizeof(struct List));
HeadCreatList(L1);
DisPlay(L1);
TailCreatList(L2);
DisPlay(L2);
}
頭插法就是將一個待插入的資料,插入連結串列頭指標的下一個節點,頭指標一直保持不變
尾插法就是將一個數據插入聊邊的尾部,頭指標總是指向連結串列的尾部