c链表模拟笔记
//链表操作 #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; } }
名称栏目:c链表模拟笔记
网页URL:http://azwzsj.com/article/jdiioh.html