突然讲链表,哼
#include<stdio.h>
#include<stdlib.h>
//定义个链表。
struct NODE{
int order;
char name[20];
struct NODE *pnext;//指向truct node的一个指针,链的产生这
};
//创建节点封装成函数,可以反复调用一个函数来创建会很方便
struct NODE *Creatlink()
{
struct NODE *h;
//利用malloc()申请分配节点(也就是一个地址)
h=(struct NODE *)malloc(sizeof(struct NODE));//地址分配函数
h->pnext=NULL;//让头指针有指向
return h;
}
//插入节点
void InsertNode(struct NODE *Head)
{
struct NODE *pnew;//用于连接的一个指针
//利用malloc()申请分配节点(也就是一个地址)
pnew=(struct NODE *)malloc(sizeof(struct NODE));
scanf("%d%s",&pnew->order,pnew->name);
//由于指针必须有指向,所以新指针也必须指向空
pnew->pnext=NULL;
//开始连接a到b的链接方式教给了pnew指针
pnew->pnext=Head->pnext;
//头后面插入一个,因为头原是第一个指向第三(原第二),所以变成一到二
Head->pnext=pnew;
return;
}
//打印
void Dispaly(struct NODE *Head)
{
//临时指针代替头指针,因为头指针不能移动,因为移动后,进行下次操作会出错
struct NODE *pt;
pt=Head->pnext;
while(pt!=NULL)
{
printf("%d %s ->",pt->order,pt->name);
pt=pt->pnext;
}
return;
}
int main()
{
int i;
struct NODE *Head;//声明表头head(链表开始的位置)
Head=NULL;//建一个空表
Head=Creatlink();//建立链表
for(i=1;i<=3;i++)
{
InsertNode(Head);
}
Dispaly(Head);
return 0;
}