#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
//#define _CRT_SECURE_NO_WARNINGS
//创建一个结构体用来表示链表的节点类型
typedef struct linkednode
{
int data;
struct linkednode *next;
}snode,*ptr;
int main(void)
{
ptr head, p, q, t;
int i, n, a;
scanf("%d", &n);
head = NULL;//头指针初始为空
for (i = 1; i <= n; i++)
{
scanf("%d", &a);
//动态申请一个空间,用来存放一个结点,并用临时指针p指向这个结点
p = (ptr)malloc(sizeof(linkednode));
/*等价于 p = (snode *)malloc(sizeof(linkednode));可以试试哟(*^__^*) ……
*/
p->data = a;//把数据存储到当前结点的data域中
p->next = NULL;//设置当前结点的后继指针指向空,即当前结点的下一个结点为空
q = NULL;
if (head = NULL)
{
head = p;//如果这是第一个创建的结点,则将头指针指向这个结点
}
else
{
q->next = p;//如果不是第一个创建的结点,则将上一个结点的后继指针指向当前结点
}
q = p;//指针q也指向当前结点
}
//输出链表中的所有数
t = head;
while (t != NULL)
{
printf("%d ", t->data);
t = t->next;
}
system("pause");
return 0;
}
上面代码中还有一些问题:
1.关于q指针的初始化;
2.未free();//晚上回来再改吧