链表基本操作

来源:互联网 发布:win8系统修复软件 编辑:程序博客网 时间:2024/06/12 21:03

  链表就是C中利用结构体,将数据和下一个结构体的地址封装在一个结构体中形成一个节点,这些节点组合起来就是一个基础的链表,根据需要可以扩展其中的内容来实现不同的需求。
  实现一个链表需要定义节点,创建,初始化,插入,删除这些基本操作。
  

#include "stdafx.h"#include "stdlib.h"#include "malloc.h"#define OK 0#define ERRO 1typedef int DataType;typedef int Status;typedef struct LNode {    DataType    data;    struct LNode *next;    }LNode,*LPoint;//表尾插入Status CreateLink(LPoint &L, int n, DataType *E) {    int i;    LPoint p, r;    L = (LPoint)malloc(sizeof(LNode));    if (!L) return ERRO;    r = L;    for (i = 0; i < n; i++)    {        if (!(p = (LPoint)malloc(sizeof(LNode))))            return ERRO;        p->data = E[i];        r->next = p;        r = p; //尾指针右移保持指向末尾    }    r->next = NULL; //无节点插入记得置为NULL指针    return OK;}Status InsertLink(LPoint &L, int i, DataType e) {    //在第i个位置前插入e     LPoint in, p = L;    int counter = 0;    //找第i-1个位置    while (p->next != NULL && counter < i - 1) {        p = p->next;        counter++;    }    //这些变化需先判断再执行,方便下一个越界判断    if (!p->next || counter>i-1)        return ERRO; //超出范围                     //p->next ==NULL 说明往后越界,counter >i-1 说明往前越界    if (!(in = (LPoint)malloc(sizeof(LNode))))        return ERRO;//内存不足    in->data = e;    in->next = p->next;    p->next = in;    return OK;}Status DelLink(LPoint L, int i, DataType e) {    //删除第i个元素,由e返回它的值    int counter = 0;    LPoint del, p = L;    while (p->next != NULL && counter < i - 1) {        p = p->next;        counter++;    }    if (!p->next || counter > i - 1)        return ERRO;//越界    del = p->next;    p->next = del->next;    e = del->data;    free(del);    return OK;}void PrintLink(LPoint L) {    LPoint p = L->next;    while (p) {        printf("%d->", p->data);        p = p->next;    }    printf("NULL\n");}int main(){    int S[] = { 1,2,42,31,21 };    LPoint Link = NULL;    CreateLink(Link, 5, S);    PrintLink(Link);    return 0;}

这是一个带头结点的链表,基本操作都差不多。注意若是C来实现的话,头结点需要定义为二级指针,因为在函数里面改变了指针的指向,C++可以传引用,C就只能用二级指针来指了。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 二婚宠入骨易轻尘 夜少二婚新妻完整版 二婚总裁傅先生别来无羔 星际二婚之全能 叶少二婚新妻 二婚和复婚哪个会幸福 二婚女人为啥很烂 高调宠婚二婚娇妻甜入骨 七零年代二婚妻董可欣 高干二婚市长 二婚宠入骨免费 二婚女人千万不能娶 二婚男人再婚的心理 二婚女人的坏处 二婚会幸福吗 二婚女人的心理 二婚男人的可怕之处 二婚男人的心理 二婚女人的可怕之处 二婚有婚假吗 二婚婚姻介绍所 二婚怎么办婚礼 复婚算二婚吗 二婚婚假多少天 赖上二婚老婆 二婚有没有婚假 二婚离婚孩子归谁 二婚财产如何分配 二婚夫妻如何相处 二婚办婚礼吗 强宠二婚老婆 二婚可以休婚假吗 男人二婚会幸福吗 二婚登记需要什么证件 二婚是否有婚假 二婚和原配哪个幸福 二婚婚前财产 二婚离婚协议书怎么写 二婚怎么相处 晚上结婚是二婚吗 二婚怎么祝福