单链表的基本操作

来源:互联网 发布:美萍软件怎么样 编辑:程序博客网 时间:2024/06/16 02:50

单链表的基本操作

首先预定义链表结构和结点

typedef struct Node{    ElemType data;    struct Node *next;}Node;typedef struct Node *LinkList;      /*定义LinkList*/

接下来贴几个基本操作

/*初始条件:顺序线性表L 不存在*//*操作结果:建立一个头结点*/Node *LinkListInit(){    Node *p;    p = (Node *)malloc(sizeof(Node));   /*建立一个大小与Node结点大小相同的结点*/    if(!p){        printf("分配空间失败!");    }    p->next = NULL;    return p;}/*初始条件:顺序链表L 已存在*//*操作结果:在链表L 中填入元素*/Node *LinkListCreat(){    Node *q, *p, *L;    p = (Node *)malloc(sizeof(Node));    L = (Node *)malloc(sizeof(Node));       //建立一个头结点    //开始建立新的链表的后续项目    q = (Node *)malloc(sizeof(Node));    printf("请输入该链表的元素(0表示结束):");    scanf("%d", &q->data);    int m = q->data;    while(m != 0){          // 判断输入是否为0        p->next = q;        p = q;        q = (Node *)malloc(sizeof(Node));         printf("请输入该链表的元素(0表示结束):");        scanf("%d", &m);        q->data = m;    }}/*初始条件:顺序线性表L 已存在,1 <= i <= ListLength(L)*//*操作结果:用e 返回L 中第i 个数据元素的值*/Status GetElem(LinkList L, int i, ElemType *e){    int j;    LinkList p;         /*声明一指针p*/    p = L->next;        /*让p 指向链表L的第一个结点*/    j = 1;              /*j 为计数器*/    while(p && j < i){  /*p 不为空 且计数器j还没有等于i 时,循环继续*/        p = p->next;    /*让p 指向下一个结点*/        j++;    }    if(!p || j > i){    /*当第i 个结点不存在时*/        return ERROR;    }    * e = p->data;      /*取第i 个结点的数据*/    return Ok;}
原创粉丝点击