数据结构单链表

来源:互联网 发布:想在淘宝卖烧鸡 编辑:程序博客网 时间:2024/06/17 09:53

数据结构单链表

#include <stdio.h>#include  <stdlib.h>#define MAXSIZE 20#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int ElemType;typedef struct Node{    ElemType data;    struct Node *next;//单链表} Node;typedef struct Node * LinkList;// 声明头指针Status GetElem(LinkList L, int i, ElemType *e)//获取元素{    int j;    LinkList p;    p = L->next;          /* 让p指向链表L的第一个结点 */    j = 1;                /* j为计数器 */    while (p && j < i)        {            p = p->next;      /* 让p指向下一个结点 */            ++j;        }    if (!p || j > i)        {            return ERROR;    /* 第i个结点不存在 */        }    *e = p->data;         /* 取第i个结点的数据 */    return OK;}/**单链表插入*/Status ListInsert(LinkList *L, int i, ElemType e){    int j;    LinkList p, s;    p = *L;    j = 1;    while (p && j < i)                     /* 寻找第i-1个结点 */        {            p = (*p).next;            ++j;        }    if (!p || j > i)        {            return ERROR;        }    s = (LinkList)malloc(sizeof(Node));    /* 生成新结点 */    (*s).data = e;    (*s).next = (*p).next;                     /* 将p的后继结点赋值给s的后继 */    (*p).next = s;                           /* 将s赋值给p的后继 */    return OK;}/**链表删除*/Status ListDelete(LinkList *L, int i, ElemType *e){    int j;    LinkList p, q;    p = *L;    j = 1;    while (p->next && j < i)    /* 遍历寻找第i-1个结点 */        {            p = p->next;            ++j;        }    if (!(p->next) || j > i)        {            return ERROR;     /* 第i个结点不存在 */        }    q = p->next;    p->next = q->next;          /* 将q的后继赋值给p的后继 */    *e = q->data;               /* 将q结点中的数据给e */    free(q);                    /* 让系统回收此结点,释放内存 */    return OK;}int main(void){    LinkList l;    ListInsert(&l,1,4);    ListInsert(&l,2,8);    return 0;}
原创粉丝点击