当前位置 : 主页 > 网页制作 > HTTP/TCP >

单向链表

来源:互联网 收集:自由互联 发布时间:2021-06-16
单项链表的一些必要声明 #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;
    }
}
网友评论