c链表模拟笔记
发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,//链表操作#include #include #include //定义一个结构体包含数据域和指针域,指针域存放下一个节点的地址typedef struct Node{ int dat
//链表操作#include#include #include //定义一个结构体包含数据域和指针域,指针域存放下一个节点的地址typedef struct Node{ int data; struct Node * pNextNode;}NODE,*PNODE;//创建一个链表,返回第一个节点的地址PNODE createNodeLink(void);//遍历链表,参数为第一个节点的地址void traverseLinked(PNODE pHead);int main(void){ //创建链表 PNODE pHead = createNodeLink(); //遍历链表 traverseLinked(pHead); getchar(); return 0;}//创建链表,,下一个创建的节点的pNextNode指向上一个创建的节点,即从后往前创建PNODE createNodeLink(void){ //中间变量,用于保存上一个节点 PNODE pNodeTail = (PNODE)malloc(sizeof(NODE)); if(pNodeTail == NULL){ printf("分配失败,程序终止!\n"); exit(-1); } int len = 7 ,i,val; i = 0; printf("请输入您要生成的链表的节点的个数:"); scanf("%d",&len); for(i = 0;i < len;i++){ printf("请输入%d个节点的值:\n",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(pNew == NULL){ printf("分配失败,程序终止!\n"); exit(-1); } pNew->data = val; if(i == 0){ pNew->pNextNode = NULL; }else{ pNew->pNextNode = pNodeTail; } pNodeTail = pNew; } //循环完成,pNodeTail刚好指向第一个节点 return pNodeTail;}//遍历链表void traverseLinked(PNODE pHead){ PNODE pTemp = pHead; while(pTemp != NULL){ printf("%d\t",pTemp->data); pTemp = pTemp->pNextNode; }}