数据结构------线性表的链式表示与实现

 

不多说直接上代码:

#include"stdafx.h"

#include <stdio.h>

#include <stdlib.h>



/******************************************************************************

/* 数据类型和常量定义

/******************************************************************************/

#define TURE         1

#define FALSE        0

#define OK           1

#define ERROR        0

#define OVERFLOW    -2



typedef int Status;

typedef int ElemType;



typedef struct LNode

{

   ElemType data;

   struct LNode *next;

} LNode, *LinkList;



//获取元素

Status GetElem(LinkList L,int i, ElemType &e)

{

    int j = 0;

    LinkList p = NULL;

    p = L ->next;

    while(p && j < i) 

    {

        ++j;

        p = p ->next;

    }

    if (!p || j > i) return ERROR;

    e = p ->data;

    return OK;

}

//构造线性表

void CreateList(LinkList &L,int n)

{

    printf("input %d intergers",n);

    LinkList p = NULL;

    L = new LNode;

    L ->next = NULL;

    for (int i = n; i >0 ;--i)

    {

        p = new LNode;

        scanf("%d",&p ->data);

        p->next = L->next;

        L ->next = p;

    }

}



//在线性表中插入元素

Status ListInsert(LinkList &L,int i,ElemType e)

{

    //在带头结点的单链线性表L中第i个位置之前插入元素e

    LinkList p = NULL;

    LinkList s = NULL;

    p = L;

    int j = 0;

    while (p && j < i - 1)  

    {

        p = p ->next;

        ++j;

    }

    if (!p || j > i - 1)

    {

        return ERROR;

    }

    s = new LNode;

    s -> data = e;

    s -> next = p->next;

    p -> next = s;

    //delete(p); //L与P同根连枝

    return OK;

}



//打印线性表

void PrintList(LinkList L)

{

    LinkList p = L->next;

    while(p)

    {

       printf("%d  ",p->data);

       p = p ->next;

    }

    

}



void main()

     

{

    LinkList L=NULL;  

    ElemType e;

    CreateList(L, 2);

    ListInsert(L,1,5);

    PrintList(L);

}

 

你可能感兴趣的:(数据结构)