链表概述
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。
链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”
每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。
// the frist node test 反向输出一个链表 // 2018/5/18 21:11 // write by xiao #include<stdio.h> #include<stdlib.h> #include<malloc.h> //定义结构体 typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; LinkList CreateList(int n); void print(LinkList h); int main() { LinkList Head=NULL; //头部值为null int n; printf("请输入要建立几个节点:"); scanf("%d",&n); Head=CreateList(n); printf("链表节点的元素值为:\n"); print(Head); printf("\n\n"); system("pause"); return 0; } //创建节点 LinkList CreateList(int n) { LinkList L,p,q; int i; L=(LNode*)malloc(sizeof(LNode)); if(!L)return 0; L->next=NULL; q=L; for(i=1;i<=n;i++) { p=(LinkList)malloc(sizeof(LNode)); printf("请输入第%d个元素的值:",i); scanf("%d",&(p->data)); p->next=NULL; q->next=p; q=p; } return L; } //打印函数 void print(LinkList h) { LinkList p=h->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } }
结果如下: