链表尾插法及遍历

    技术2026-03-16  3

    #include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef struct Node { int data; //数据域 struct Node * pNext; //指针域 }NODE,*PNODE; //NODE = struct Node , PNODE = struct Node * //函数声明 PNODE create_list(void); void traverse_list(PNODE pHead); int main(void) { PNODE pHead = NULL; //struct Node * pHead = NULL; pHead = create_list(); //创建一个非循环单链表,并将该链表的头结点的地址赋给pHead traverse_list(pHead); return 0; } PNODE create_list(void) { int len; int i; int val; //用来临时存放用户所输入的节点的值 //分配了一个不存放有效数据的头结点,pHead是头指针 PNODE pHead = (PNODE)malloc(sizeof(NODE)); if(NULL == pHead) { printf("分配失败,程序终止!\n"); exit(-1); } //pTail时刻指向尾节点 PNODE pTail = pHead;//pTail也指向了头结点 pTail->pNext = NULL; printf("请输入您需要生成的链表节点的个数:len = "); scanf("%d",&len); for(i=0; i<len; ++i) { printf("请输入第%d个节点的值",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL == pNew) { printf("分配失败,程序终止!\n"); exit(-1); } pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew; } return pHead; } void traverse_list(PNODE pHead) { PNODE p = pHead->pNext;//p指向第一个有效节点 while(NULL != p) { printf("%d ",p->data); p = p->pNext;//往后移动 } printf("\n"); return; }
    Processed: 0.008, SQL: 9