头插法建立单链表

来源:互联网 发布:华泰证券 for mac 编辑:程序博客网 时间:2024/06/03 16:34
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
typedef struct List
{
 int data;
 struct List *next;
}List;
int main()
{
 void HeadCreatList(List *L,char x[]) ;
 void DisPlay(List *L);
 char x[MAX];
 List *head=(List *)malloc(sizeof(List));
 scanf("%s",x);
 HeadCreatList(head,x);
 DisPlay(head);
 free(head);
 return 0;
}
//头插法建立链表
void HeadCreatList(List *L,char x[])
{
 List *s;
 int i;
 L->next=NULL;
 for (i=0;x[i]!='\0';i++)
 {
  s=(struct List*)malloc(sizeof(struct List));
  s->data=x[i];
  s->next=L->next; //将L指向的地址赋值给S;
  L->next=s;
 }
}
//输出函数
void DisPlay(List *L)
{
 List *p=L->next;
 while(p!=NULL)
 {
  printf ("%c",p->data);
  p=p->next;
 }
 printf("\n");
}


Commentes:

这种办法建立的链表最后会有一个无意义的空结点,当然这对于空间复杂性的评判是无关紧要的,但是在进行链表处理的时候可能要注意到这一点。不知道还有没有更好的算法。。。

总之可以运行咯~~

 
原创粉丝点击