单项链表的一些必要声明 #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;
}
}
