C语言单链表的应用,该如何在单链表上通过插入A~E建立非空单链表并输出?

如何创建空单链表,并在单链表上通过插入A~E建立非空单链表并输出,且取第3个数据元素并输出,并在已有单链表里查找B,并输出查找结果,最后删除单链表里的第4个数据元素并输出删除后的单链表。 在devc++环境中运行。


#include<iostream>
using namespace std;
struct list//创建一个简单的链表节点 
{
    char ch;//只是存储一个数 
    list *next;//指向下一个节点的指针,链表的关键 
};
int main()
{
    list *head=NULL,*chain=NULL,*data=NULL;//头指针用来记录这个链表的位置,另外两个指针用来推进节点的创建和连接
    //链表数据的输入 
    while(1)
    {
        data=new list;//首先分配一块内存 
        cin>>data->ch;//读入数据并存储 
        if(head==NULL)//如果是第一个,那么要让头指针指向它 
        head=data;
        else//如果不是第一个,那么就让上一个节点的指针成员指向它 
        chain->next=data;
        chain=data;//让这个节点成为上一个节点 
        data->next=NULL;//表示尾节点 
        if(getchar()=='\n')//如果按下回车就不读了,不然就一直装 
        break;
    }
    //链表数据的输出 
    data=head;//找到链表的位置 
    int i=1;
    while(data)
    {
        if(i++==3)
        cout<<data->ch<<' ';
        data=data->next;//推进 
    }
    data=head;//找到链表的位置 
    while(data)
    {
        if(data->ch=='B')
        cout<<data->ch<<' ';
        data=data->next;//推进 
    }
    data=head;//找到链表的位置
    i=1; 
    while(data)
    {
        if(i++==4)
        chain=data->next;
        data=data->next;//推进 
    }
    data=head;//找到链表的位置 
    i=1;
    while(data)
    {
        if(i++==3)
        data->next=chain;
        data=data->next;//推进 
    }
    data=head;//找到链表的位置 
    while(data)
    {
        cout<<data->ch<<' ';
        data=data->next;//推进 
    }    
    //链表内存释放 
    data=head;//找到链表位置 
    while(data)//如果不是到尾了,那就继续释放 
    {
        chain=data->next;//先推进,不然先释放的话,后面的就找不到了 
        delete data;
        data=chain;
    }
}

数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633