1.单链表存储结构
typedef struct Node /*结点类型定义*/
{char data;
struct Node *next;
}Node,*LinkList; /*LinkList为结构指针类型*/
2.初始化单链表
void InitList(LinkList *L)
{*L=(LinkList)malloc(sizeof(Node)); /*建立头结点*/
(*L)->next=NULL; /*建立空的单链表L*/
}
3.头插法建表
void CreatFromHead(LinkList L)
{Node *s;
char c;
int flag=1;
while(flag)
{c=getchar();
if(c!='$')
{s=(Node*)malloc(sizeof(Node));/*建立新结点s*/
s->data=c;
s->next=L->next;/*将s结点插入表头*/
L->next=s;
}
else
flag=0;
}
}
4.打印单链表
void PrintLinkList(Node *L)
{Node *temp=L;
while(temp->next)
{temp=temp->next;
printf("%c",temp->data);
}
}
5.主函数
int main()
{Node *L;
InitList(&L);
CreatFromHead(L);
PrintLinkList(L);
return 0;
}
以上就是用头插法实现打印单链表的过程。
不过嘛,对于我这个小白来说还有一个错误确实是粗心大意了!!!
来看小白的严重失误......
int main()
{Node *L;
InitList(*L); /* *L重大错误,正确的应该为&L */
CreatFromHead(L);
PrintLinkList(L);
return 0;
}
OK,来看完整代码!
#include<stdio.h>
#include<stdlib.h>
/*定义结构体类型*/
typedef struct Node /*结点类型定义*/
{char data;
struct Node *next;
}Node,*LinkList; /*LinkList为结构指针类型*/
/*初始化单链表*/
void InitList(LinkList *L)
{*L=(LinkList)malloc(sizeof(Node)); /*建立头结点*/
(*L)->next=NULL; /*建立空的单链表L*/
}
/*头插法建表*/
void CreatFromHead(LinkList L)
{Node *s;
char c;
int flag=1;
while(flag)
{c=getchar();
if(c!='$')
{s=(Node*)malloc(sizeof(Node));/*建立新结点s*/
s->data=c;
s->next=L->next;/*将s结点插入表头*/
L->next=s;
}
else
flag=0;
}
}
/*打印单链表*/
void PrintLinkList(Node *L)
{Node *temp=L;
while(temp->next)
{temp=temp->next;
printf("%c",temp->data);
}
}
/*主函数*/
int main()
{Node *L;
InitList(&L);
CreatFromHead(L);
PrintLinkList(L);
return 0;
}
