使用结构体定义单链表节点
typedef struct Node * pNode;
struct Node
{
int Data;
pNode Next;//结构的递归定义 等效于注释代码
// struct Node * Next;
};
主函数
#include <stdio.h>
#define NUM 6 //用于指定数组大小
pNode creatList(); //创建固定数值的链表
pNode inputCreatList();//键盘输入创建链表
int main()
{
pNode tmp=(pNode)malloc(sizeof(struct Node) );
tmp=creatList();
tmp=inputCreatList();
return 0;
}
运行结果
使用固定数组创建单链表
pNode creatList()
{
int a[NUM] ={2,1,6,3,4,6};
int i=0,j=NUM;
pNode head=(pNode)malloc(sizeof(struct Node) );
pNode tmp=(pNode)malloc(sizeof(struct Node) );
tmp=head;
for(i=0;i<NUM;i++)
{
pNode p=(pNode)malloc(sizeof(struct Node) );
tmp->Data=a[i];
tmp->Next=p;
tmp=p;
// tmp->Data=a[i];
}
tmp=head;
//遍历输出链表
printf("方法1:固定数值创建链表:\n");
while(j--)
{
printf("%d, ",tmp->Data);
tmp=tmp->Next;
}
return head;
}
使用键盘输入的值创建链表
pNode inputCreatList()
{
int inN;
pNode head = (pNode) malloc(sizeof(struct Node));
pNode tmp= (pNode) malloc(sizeof(struct Node));
tmp=head;
scanf("%d",&inN);
printf("inN:%d\n",inN);
while(inN--)
{
pNode p =(pNode) malloc (sizeof(struct Node));
tmp->Next=p;
scanf("%d",&(p->Data)); // 键盘输入值为指针赋值
p->Next=NULL; // 新建的节点p next 存储地址初始化为 空
tmp=p; // 当前指针移动到下一个节点
}
tmp=head->Next; // head节点不是第一个节点 跳过。。
printf("方法2:键盘输入数值创建链表:\n");
while(tmp!=NULL)
{
printf("%d, ",tmp->Data);
tmp=tmp->Next;
}
return head;
}
参考:
单链表的创建--从零开始