单向链表实例
链表结构:需要增加数据再增加,不用先定义内存
#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; }