8.c语言程序设计---高级数据表示

 单向链表实例

链表结构:需要增加数据再增加,不用先定义内存

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//单向链表,结构体

struct Node  //结构体节点
{
    char Bookname[50]; //书名
    int BookNumber;    //书号
    float BookPrice; //价格
    struct Node *next; //为后门指向下一个节点用
};
 
struct Node *AppendNode(struct Node * head,char *Bookname,int BookNuber,float price)    //struct Node 表示返回类型为这个的函数,就像 int test(){} 声明函数一样
{
    struct Node * pNewNode = NULL;
    struct Node * pHeadNode = head;
    pNewNode = (struct Node *)malloc(sizeof(struct Node)); //申请内存给新建的节点
    if (pNewNode == NULL) //判断是否申请成功
    {
        printf("memory malloc failed!
");
        exit(0);
    }
    if (head == NULL)  //判断是否有头节点,传进来的参数
    {
        head = pNewNode;//如果没有头节点的话,就让它指向新建的节点
    }
    else
    {
        while (pHeadNode->next != NULL)
        {
            pHeadNode = pHeadNode->next; //找到最后一个节点,它的下一个节点为空才跳出循环
        }
        //这个时候pHeadNode 已经来到了最后一个节点
        pHeadNode->next = pNewNode; //让它指向新建的节点,新的节点就是最后一个节点
    }
    //可以给它数据了,书名 价格之类
    strcpy(pNewNode->Bookname, Bookname);
    pNewNode->BookNumber = BookNuber;
    pNewNode->BookPrice = price;
    pNewNode->next = NULL; //因为它已经是最后一个节点了,让它指向NULL
    return head;
}
int main()
{
    struct Node * head = NULL; //链表头指针
    head=AppendNode(head,"yuwen",100,15.6); //添加功能
    AppendNode(head, "shuxue", 100, 15.6);
    return 0;
}

 

原文地址:https://www.cnblogs.com/trevain/p/14471623.html