/*头插尾插创建单链表*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define Max 20
typedef struct Node{
char data;
struct Node*next;
}Node,*Linklist;//声明Node为结构体类型,Linklist为结构体指针类型
/*
void Initiallist(Linklist* L)//建立空的单链表
{
/*1.L是指向单链表的头结点的指针,用来接收主程序中待初始化单链表的头指针变量的地址
* 2.*L相当于主程序中代初始化单链表的头指针变量
* 3.L可以通过*L的地址访问结构体指针类型*L,从而通过指向头结点的指针L访问结构体中的成员*/
/*
*L=(Linklist)malloc(sizeof(Node)*10);//*L中存放malloc函数返回的结构体指针类型的地址,这个地址又在L中存放着
(*L)->next=NULL;//这个节点的指针域置空
}
*/
Linklist initiallist(Linklist L){
L=(Linklist)malloc(sizeof(Node));//*L中存放malloc函数返回的结构体指针类型的地址,这个地址又在L中存放着
if(L==NULL)
printf("error!");
else
printf("success!\n");
L->next=NULL;
return L;
}
/*头插法建立单链表*/
void createhead(Linklist L){
/*L是带头节点的空链表头指针*/
Node*s;
char c;
int flag = 1;
while(flag)
{
fflush(stdout);
c=getchar();
if(c!='$'){
s=(Node*)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}else flag=0;
}
}
void print(Linklist L){
Node *p=L->next;
while(p!=NULL)
{
printf("%2c",p->data);
p=p->next;
}
}
int main(){
Linklist L=initiallist(L);
createhead(L);
print(L);
return 0;
}
调试结果
success!
sdf$
f d s