回 帖 发 新 帖 刷新版面

主题:速求 望哪位大侠帮菜鸟小弟一下

链表的基本操作 
利用头插法建立一个带头结点单链表,并能用算法实现该单链表的插入、删除、查找、求某个元素的前驱和后继、把此单链表逆置、从小到大排序,同时要求在屏幕上显示每次操作的结果,当所有操作完成后能撤消该单链表。

回复列表 (共2个回复)

沙发

内容  还真多啊

板凳

#include <iostream.h>
#include <malloc.h>
typedef struct node
{
    char info;
    node *link;
}*pnode,*linklist;

int initial(linklist &L)//创建空链表
{
    L=(linklist)malloc(sizeof(node));
    if(!L)
    {
        cout<<"out of space!\n";
        return 0;
    }
    L->link=NULL;
    return 1;
}

void brow(linklist &L)//浏览表的元素
{
  pnode p;
  p=L->link;
  while(p!=NULL)
        {
          cout<<p->info;
          p=p->link;
        }
}
void append(linklist &L,char x)//负责初始化线性表
{
    pnode p,q,n;
    p=L;
    q=L->link;
    while(q!=NULL)
    {
        p=q;
        q=q->link;
    }
    n=(linklist)malloc(sizeof(node));
    n->info=x;
    p->link=n;
    n->link=NULL;
}
pnode loc(linklist L,char x)//在单链表中求某元素的存储位置
{
    pnode p;
    if(L==NULL)
        return NULL;
    p=L->link;
    while(p!=NULL&&p->info!=x)
        p=p->link;
    return p;
}

int insertpost(linklist &L,pnode p,char x)//单链表的插入
{
    pnode q;
    q=(pnode)malloc(sizeof(node));
    if(q==NULL)
    {
        cout<<"out of space!\n";
        return 0;
    }
    else
    {
        q->info=x;
        q->link=p->link;
        p->link=q;
        return 1;
    }
}
int delet(linklist &L,char x)//单链表的删除
{
    pnode p,q;
    p=L;
    if(p==NULL)
        return 0;
    while(p->link!=NULL&&p->link->info!=x)
        p=p->link;
    if(p->link==NULL)
    {
        cout<<"not exist!\n";
        return 0;
    }
    else
    {
        q=p->link;
        p->link=q->link;
        free(q);
        return 1;
    }
}
int Length(linklist &L)//求表长
{
  int i=0;
  pnode p;
  p=L->link;
  while(p!=NULL)
  {
       i++;
       p=p->link;
  }
  return i;
}

void main()
{    
    linklist L;
    cout<<"创建空链表(1代表创建成功,0代表创建失败):";
    cout<<initial(L)<<endl<<"原来的链表:";
    append(L,'a');
    append(L,'b');
    append(L,'c');
    brow(L);
    cout<<endl<<"链表的长度:"<<Length(L)<<endl;
    delet(L,'c');
    cout<<"删除后的表:";
    brow(L);
    cout<<endl;
}
/**************************************
输入与运行结果:
创建空链表(1代表创建成功,0代表创建失败):1
原来的链表:abc
链表的长度:3
删除后的表:ab
****************************************/
仅供参考

我来回复

您尚未登录,请登录后再回复。点此登录或注册