数据结构C语言链表表头插入生成单链表
//表头插入生成单链表
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data; //data为节点的数据信息
struct node* next; //next为指向后继节点的指针
}LNode; //单链表节点类型
LNode* CreateLinkList() //在表尾生成单链表
{
LNode* head, * p, * q;
char x;
head = (LNode*)malloc(sizeof(LNode)); //生成头节点
head->next = NULL; //初始时链表为空,即*head既为头节点又为尾节点
q = head; //指针p始终指向链尾节点
printf("Input any char string : \n");
scanf("%c", &x); //节点数据与为char型,读入节点数据
while (x != '\n') //生成链表其他节点
{
p = (LNode*)malloc(sizeof(LNode)); //申请一个节点空间
p->data = x; //将读入的数据赋值给待插入节点*p
p->next = NULL; //当待插入节点*p作为链尾节点时其后继指针为空
q->next = p; //在链尾插入新节点*p
q = p; //指针q指向新的链尾节点*p
scanf("%c", x);
}
return head; //返回单链表表头指针
}
void main()
{
LNode* h, * p;
h = CreateLinkList(); //以字母数据在表尾生成单链表
p = h->next; //输出单链表
while (p != NULL)
{
printf("%c", p->data);
p = p->next;
}
printf("\n");
}