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

 

不多说直接上代码:

#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);
}

 

posted on 2014-05-05 21:51  zhuxuekui3  阅读(288)  评论(0编辑  收藏  举报