热门IT资讯网

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;        }}


0