链表

#include<iostream>
#include<cstring>
#include<stdlib.h>
using namespace std;
typedef struct LNode
{
    int data;
    struct LNode *next;
}Linklist;
void creatF(Linklist *&L,int a[],int n);
void creatR(Linklist *&L,int a[],int n);
void creatF(Linklist *&L,int a[],int n)
{
    Linklist *s;
    int i;
    L = (Linklist *)malloc(sizeof(Linklist));
    L->next = NULL;
    for (i = 0;i < n;i++)
    {
        s = (Linklist *)malloc(sizeof(Linklist));
        s->data = a[i];
        s->next = L->next;
        L->next = s;
    }
}
void creatR(Linklist *&L,int a[],int n)
{
    Linklist *s,*r;
    int i;
    L = (Linklist *)malloc(sizeof(Linklist));
    r = L;
    for (i = 0;i < n;i++)
    {
        s = (Linklist *)malloc(sizeof(Linklist));
        s->data = a[i];
        r->next = s;
        r = s;
    }
    r->next = NULL;
}

 线性表的基本运算及实现

#include<iostream>
#include<cstring>
#include<stdlib.h>
using namespace std;
typedef struct LNode
{
    int data;
    struct  LNode *next;
}Linklist;
//线性表的基本实现
void InitList(Linklist *&L);
void Destory(Linklist *&L);
int ListEmpty(Linklist *L);
//初始化线性表
void InitList(Linklist *&L)
{
    L = new Linklist;
    L->next = NULL;
}
//销毁线性表
void Destory(Linklist *&L)
{//释放单链表L所占用的内存空间,逐一解放全部结点的空间
    Linklist *p = L, *q = p->next;
    while (q != NULL)
    {
        delete p;//从头结点开始释放
        p = q;//获取下一个结点
        q = p->next;//指向相对的下一个结点
    }
    delete q;//此时q为NULL,p指向尾结点,释放q
}
int ListEmpty(Linklist *L)
{
    return (l->next == NULL);//若单链表L没有数据结点,则返回1,否则返回0
}

 

posted @ 2014-10-05 01:41  tong1487  阅读(138)  评论(0)    收藏  举报