首页 > 编程语言 > 详细

C语言构建一个链表以及操作链表

时间:2021-05-05 17:39:15      阅读:27      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
 
struct Node{
    int data;
    struct Node * pNext;
};
 
struct Node * createList(void){
    int len;       //存放有效节点的个数
    int  i;
    int  val;      //用来临时存放用户输入的节点的值
 
    struct Node * pHead = (struct Node *)malloc(sizeof(struct Node));
    if (NULL == pHead) {
        printf("分配失败程序终止!\n");    
        exit(-1);
    }
    struct Node * pTail = pHead;
    pTail->pNext=NULL;
 
    printf("请输入要生成链表的节点个数: len=");
    scanf_s("%d", &len);
 
    for (int i = 0; i < len; ++i){
 
        printf("请输入第%d个节点的值:", i + i);
        scanf_s("%d",&val);
 
        struct Node * pNew = (struct Node *)malloc(sizeof(struct Node));
        if (NULL == pNew) {
            printf("分配失败程序终止!\n");
            exit(-1);
        }
 
        pNew->data = val;
        pTail->pNext = pNew;
        pNew->pNext = NULL;
        pTail = pNew;
    }
    return pHead;
};
 
bool empty_list(struct Node * pHead) {
    if (pHead->pNext == NULL) {
        return true;
    }else{
        return false;
    }
 
}
 
void TraverseList(struct Node * pHead ) {
 
    if (empty_list(pHead)) {   //判断链表是否为空
        printf("链表为空");
    }else {
       //链表操作
    }
 
    //优化链表操作
    struct Node * p = pHead->pNext;
    while (NULL!=p){
        printf("%d\n", p->data);
 
        p = p->pNext;
    }
 
    return;
}
 
int main(void) {
 
    struct Node * pHead=NULL; //头指针(存放链表头结点地址)
    pHead = createList();  //构建一个链表
    TraverseList(pHead);   //操作链表
}

 

C语言构建一个链表以及操作链表

原文:https://www.cnblogs.com/ruiyao18369/p/14731608.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!