链表的实现

#include<iostream>
#include<stdlib.h>
using namespace std;
typedef int ElemType;
typedef struct Node
{
    ElemType data;
    struct Node* next;
}*LinkList,Node;

LinkList LinkListCreate()
{
    int data;
    Node *L=(Node*)malloc(sizeof(Node));
    if(L==NULL) cout<<"Error"<<endl;
    L->next=NULL;
    Node *r;
    r=L;
    while(cin>>data)
    {
        if(data<0) break;
        Node *p=(Node*)malloc(sizeof(Node));
        if(p==NULL) cout<<"Error"<<endl;
        p->next=NULL;
        p->data=data;
        r->next=p;
        r=r->next;
    }
    return L;
}

LinkList LinkListDelete(LinkList L,int data)
{
    Node *pre,*p;
    pre=L;
    p=L->next;
    while(p && p->data!=data)
    {
        pre=p;
        p=p->next;
    }
    if(pre->next) pre->next=p->next;
    free(p);
    return L;
}

LinkList LinkListPrint(LinkList L)
{
   Node *p;
   p=L->next;
   while(p)
   {
       cout<<p->data<<endl;
       p=p->next;
   }
   return L;
}

int main()
{
    int x;
    LinkList L=LinkListCreate();
    cin>>x;
    LinkListDelete(L,x);
    LinkListPrint(L);
    return 0;
}

  

原文地址:https://www.cnblogs.com/zsboy/p/3865616.html