首页 > 代码库 > 链表的创建和遍历
链表的创建和遍历
#include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Node { int date;//数据域 struct Node* pNext;//指针域 }NODE,*PNODE; //函数声明; PNODE create_list(void); void travel_list(PNODE pHead); int main() { PNODE pHead=NULL;//等价于struct Node* pHead=NULL; pHead = create_list();//创建一个非循环链表,并将该链表的头结点地址指向pHead; travel_list(pHead);//遍历链表 return 0; } PNODE create_list(void) { int len;//用来存放有效节点 int i;//用于循环 int val;//用于临时存放用户输入的节点的值 PNODE pHead = (PNODE)malloc(sizeof(NODE)); if(NULL==pHead) { printf("分配失败,程序终止!\n"); //return 0; exit(-1); } PNODE pTail=pHead;//使pTail始终指向尾节点。 pTail->pNext=NULL; printf("请输入你需要生成的链表节点的个数;len="); scanf("%d",&len); for(i=0;i<len;i++)//为len个节点分配内存单元。 { printf("请输入第%d个节点的值:",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE));//定义一个指针类型,用来存放新地址的指针,指向为尾指针的下一位。 if(NULL==pNew) { printf("分配失败,程序终止\n"); exit(-1); } pNew->date=val;//让录入的数值等于一个新分配内除单元的储存单元。 pTail->pNext=pNew;//尾指针的下一节点为pNew pNew->pNext=NULL;//pNew存放的新地址的指针,里面是空的 pTail=pNew;//最后分配的存储单元就是尾指针。 } return pHead; } void travel_list(PNODE pHead)//遍历节点的函数 { PNODE p=pHead->pNext;//定义一个p指针,用来遍历链表中的各个节点。先把首节点赋给p; while(NULL!=p) { printf("%d ",p->date); p=p->pNext;//如果P指向的节点不为空,那么就继续指向下一节点,如果为空,那么程序结束运行。 } printf("\n"); return ; }
链表的创建和遍历
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。