6.头插法建立线性表

 1 
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 
 5 #define ElemType char
 6 typedef struct Node      /*结点类型定义*/ 
 7 
 8     ElemType data;
 9     struct Node  * next;
10 }Node, *LinkList;         /* LinkList为结构指针类型*/
11 
12 
13 LinkList  CreateFromHead()    /*通过键盘输入表中元素值,利用头插法建单链表,并返回该单链表头指针L*/
14 
15     LinkList   L;
16     Node   *s;
17     char     c;
18     int     flag=1;
19     L=(LinkList)malloc(sizeof(Node));     /*建立头结点*/
20     L->next=NULL;                            /*建立空的单链表L*/
21     while(flag)                                   /* flag初值为1,当输入"$"时,置flag为0,建表结束*/
22     {
23         c=getchar();   
24         if(c!='$')
25         {
26             s=(Node*)malloc(sizeof(Node));    /*建立新结点s*/
27             s->data=c;
28             s->next=L->next   /*将s结点插入表头*/
29             L->next=s;             /*移动栈指针,指向新添加的元素*/
30         }
31         else
32             flag=0;
33     }
34     return L;
35 }
36 
37 void main()
38 {
39     LinkList l;
40     Node *p;
41     printf("Creat  stack  from  head,pleas enter the members ,end width $ !\n");
42     l = CreateFromHead();
43     p = l->next;
44     while(p!=NULL)
45     {
46         printf("%c\n",p->data);
47         p=p->next;
48     }
49 }
50
posted @ 2009-07-15 00:38  清山博客  阅读(731)  评论(0编辑  收藏  举报