单链表C/C++实现

#include <iostream>

using namespace std;
const int N = 10;
typedef int ELEMTYPE;

typedef struct Node
{
        ELEMTYPE data;
        Node *next;
}LNode,*LinkList;


void initLinkList(LinkList &L);
int insertList(LinkList &L,int index, ELEMTYPE e);
int deleteList(LinkList &L, int index,ELEMTYPE &e);
void printLinkList(LinkList &L);

int main()
{

    LinkList L;
    initLinkList(L);
    for(int i=1;i<=N;i++)
    {
        insertList(L,i,i);
    }
    printLinkList(L);
    return 0;
}


void initLinkList(LinkList &L)
{
    L = new LNode;
    L->data = 0;
    L->next = NULL;
}
int insertList(LinkList &L,int index, ELEMTYPE e)//插入到第index个元素前面
{
    if(index<1 || index>(L->data+1))
        return 0;

    LNode *p = L;
    int num = 0;
    while(num<index-1)
    {
        p = p->next;
        num++;
    }

    LNode *q = new LNode;
    q->data = e;
    q->next = p->next;
    p->next = q;
    L->data ++;
    return 1;
}

int deleteList(LinkList &L, int index,ELEMTYPE &e)
{

    if(index<1 || index>L->data) return 0;

    LNode *p = L;
    int num = 0;

    while(num<index-1)
    {
        p = p->next;
        num++;
    }
    LNode *q = p->next;
    e = q->data;
    p->next = q->next;
    delete q;
    return 1;
}
void printLinkList(LinkList &L)
{
    LNode *p = L;
    while(p->next)
    {
        p = p->next;
        cout<<p->data<<"	";
    }
    cout<<endl;
}
原文地址:https://www.cnblogs.com/yldf/p/11900170.html