C的单链表的实现 Posted on 2019-07-30 | In 数据结构 | | 次阅读 单链表是线性表的链式实现,插入和删除非常方便,可也失去了顺序表可随机存取的优点 12345678910111213141516171819202122232425262728293031323334353637383940#include <stdio.h> #include <stdlib.h>typedef int ElemType; typedef struct LNode{ ElemType data; //1. struct LNode *next; LNode *next; //以上两种定义方式均可声明成功 //LinkList next;此种不行 }*LinkList,LNode;void InitList(LinkList &L,int capacity) {//用给定的容量初始化一个单链表 L->data=capacity; LinkList node=L; //ElemType data=0; while(capacity--){ node->next=(LinkList)malloc(sizeof(LNode)); node=node->next; scanf("%d",&(node->data)); node->next=NULL; //对于为空的指针一定要初始化为NULL }}void ListTraverse(LinkList L,void (*visit)(int)){//对链表中的每个元素逐个调用visit函数,直至遍历结束 LinkList node=L; // for(;node!=NULL;node=node->next)// visit(node->data);// 此种或者按以下方式访问 while(node){ visit(node->data); node=node->next; }}void visit(int data){ printf("data为:%d\n",data);}int main(){ LinkList head=(LinkList)malloc(sizeof(LNode)); InitList(head,5); ListTraverse(head,&visit); return 0;} Donate comment here Donate WeChat Pay Alipay Bitcoin