C语言头插法与尾插法建立单链表
头插法
void CreateFromHead()
{ LinkList L;
Node *s;
int flag=1;
/* 设置一个标志,初值为1,当输入“$”时,flag为0,建表结束*/
L=(Linklist)malloc(sizeof(Node));/*为头结点分配存储空间*/
L->next=NULL;
while(flag)
{ c=getchar();
if(c!=’$’) /*为读入的字符分配存储空间*/
{ s=(Node*)malloc(sizeof(Node)); s->data=c;
s->next=L->next; L->next=s; }
else flag=0;
}
尾插法
void CreateFromTail() /*将新增的字符追加到链表的末尾*/
{ LinkList L;
Node *r, *s;
int flag =1;
L=(Node * )malloc(sizeof(Node));/*为头结点分配存储空间*/
L->next=NULL; r=L; /*r指针始终动态指向链表的当前表尾*/
while(flag)/*标志,初值为1。输入“$”时flag为0,建表结束*/
{ c=getchar();
if(c!=’$’)
{ s=(Node*)malloc(sizeof(Node)); s->data=c;
r->next=s; r=s }
else { flag=0; r->next=NULL; }
}
}