单项链表的一些必要声明 #include stdio.h#include stdlib.h#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList; 从表
单项链表的一些必要声明
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList;
从表头到表尾逆向创建链表
图示:当链表为空时的插入情况
图示:当链表非空时的插入情况
/** * 从表头到表尾逆向创建链表,包含n个节点 * 需传入表头指针的指针,因为需要对表头指针进行重定向 * 但凡其传入的参数需要改变原值的都需要传入其指针,包括指针本身 * 在p节点后插入in节点方法:in先和p指向相同的后继元,p再指向in */ void CreateList(LinkList * L, int n) { *L = (LinkList)malloc(sizeof(LNode)); /* 建立头结点 */ (*L)->next = NULL; LinkList in; for( ; n>0; n--) { in = (LinkList)malloc(sizeof(LNode)); scanf("%d",&in->data); /* 创建新的节点 */ in->next = (*L)->next; /* 总是在头结点之后插入 */ (*L)->next = in; } }