由指针到结构体再到链表,学习过程循序渐进。
创建一个先进先出的链表需要3个指针变量,而创建一个后进先出的指针链表只需要2个指针即可,C语言实现如下。
一、先进先出链表的创建与遍历
最终实现:输入需要创建的结点个数,并依次输入结点中所存储的数值(为了简便,结点只包括一个整形数据和一个指向下一个结构体的指针),并遍历输出第i个结点中所存储的数据。
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
struct Link
{
int data;
struct Link *next;
};
typedef struct Link lb;
lb *CreateNode(int n)
{
int i;
lb *head,*p,*q;
head = q = (lb*)malloc(sizeof(lb));
if(head != NULL)
{
head->next = NULL;
printf("请依次输入%d个结点数据:\n",n);
for(i=0;i<n;i++)
{
p = (lb*)malloc(sizeof(lb));
scanf("%d",&p->data);
q->next = p;
q = q->next;
}
}
q->next = NULL;
return head;
}
void OutputNode(lb *head)
{
struct Link *p =