知识点:
头指针变量 :LNode *head
节点指针变量 :LNode *p
(*p): p所指向的节点
(*p).data or p->data :p指向的节点数据
(*p).next or p->next :next指针
单链表节点定义类型
typedef struct node//单链表节点类型定义
{
ElemType data;
struct node *next;
}LNode;
创建链表
LNode *create(int n)//创建链表
{
int i;
LNode *head,*pnew,*prear;//最后一个指向尾节点
head = (LNode*)malloc(sizeof(LNode));
head ->next = NULL;
prear = head;
for(int i = 0;i < n;i ++)
{
pnew = (LNode*)malloc(sizeof(LNode));//申请新插入元素的空间
scanf("%d",&pnew->data);
prear -> next = pnew;
prear = pnew;
}
prear -> next = NULL;
return head;
}
输出函数
void output(LNode *head)
{
LNode *p = head->next;
while(p != NULL)//or(p)
{
printf("%d ",p->data);
p = p->next;//指向它的next指针
}
}
完整代码
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct node//单链表节点类型定义
{
ElemType data;
struct node *next;
}LNode;
LNode *create(int n)//创建链表
{
int i;
LNode *head,*pnew,*prear;//最后一个指向尾节点
head = (LNode*)malloc(sizeof(LNode));
head ->next = NULL;
prear = head;
for(int i = 0;i < n;i ++)
{
pnew = (LNode*)malloc(sizeof(LNode));//申请新插入元素的空间
scanf("%d",&pnew->data);
prear -> next = pnew;
prear = pnew;
}
prear -> next = NULL;
return head;
}
void output(LNode *head)
{
LNode *p = head->next;
while(p != NULL)//or(p)
{
printf("%d ",p->data);
p = p->next;//指向它的next指针
}
}
int main()
{
int n;
LNode *head;
scanf("%d",&n);
head = create(n);
output(head);
return 0;
}