| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 435 人关注过本帖
标题:新学求教~标题要长~~~
只看楼主 加入收藏
雨下新竹
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-10-3
收藏
 问题点数:0 回复次数:2 
新学求教~标题要长~~~
#include<iostream.h>
#include<malloc.h>
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LinkList;

void CreateListF(LinkList *&L,ElemType a[],int n)                //以首插法建立单链表
{
    LinkList *s;
    int i=0;
    L=new LinkList;
    L->next=NULL;
    for(;i<n;i++)
    {
        s=new LinkList;
        s->data=a[i];
        s->next=L->next;
        L->next=s;
    }
}
void CreateListR(LinkList *&L,ElemType a[],int n)                 //以尾插法建立单链表        
{
    LinkList *s,*r;int i;
    L=new LinkList;
    r=L;
    for(i=0;i<n;i++)
    {
        s=new LinkList;
        s->data=a[i];
        r->next=s;
        r=s;
    }
    r->next=NULL;
}
void DestroyList(LinkList *&L)        //销毁单链表
{
    LinkList *p=L,*q=p->next;
    while(q!=NULL)
    {
        free(p);
        p=q;
        q=p->next;
    }
    free(p);
}
int ListEmpty(LinkList *L)             //判断是否为空表,空则返回真,不空则返回假
{
    return(L->next==NULL);
}
int ListLength(LinkList *L)            //求单链表的长度
{
    LinkList *p;
    int i=0;
    p=L->next;
    while(p!=NULL)
    {
        i++;
        p=p->next;
    }
    return(i);
}
void DispList(LinkList *L)               //输出单链表
{
    LinkList *p=L->next;
    while(p!=NULL)
    {
        cout<<p->data<<"   ";
        p=p->next;
    }
    cout<<endl;
}
int GetElem(LinkList *L,int i,ElemType &e)   //求线性表中某个数据元素值
{
    int j=0;
    LinkList *p=L;
    while(j<i&&p!=NULL)
    {
        j++;
        p=p->next;
    }
    if(p==NULL)
        return(0);
    else
    {
        e=p->data;
        return(1);
    }
}
int LocateElem(LinkList *L,ElemType e)             //按元素值查找位置
{
    LinkList *p=L->next;
    int i=1;
    while(p!=NULL&&e!=p->data)
    {
        i++;
        p=p->next;
    }
    if(p==NULL)
        return(0);
    else
        return(i);
}
int ListInsert(LinkList *&L,int i,ElemType e)     //插入数据元素
{
    LinkList *p=L,*q;
    int j=0;
    while(j<i-1&&p!=NULL)
    {
        j++;
        p=p->next;
    }
    if(p==0)
        return(0);
    else
    {
        q=new LinkList;
        q->data=e;
        q->next=p->next;
        p->next=q;
        return(1);
    }
}
int ListDelete(LinkList *&L,int i,ElemType &e)         //删除数据元素
{
    int j=0;
    LinkList *p=L,*q;
    while(j<i-1 &&p!=NULL)
    {
        j++;
        p=p->next;
    }
    if(p==NULL)
        return 0;
    else
    {
        q=p->next;
        if(q==NULL)
            return 0;
        e=q->data;
        p->next=q->next;
        delete q;
        return 1;
    }
}
int LD2(LinkList *&L,int i)
{
    LinkList *p=L,*q;
    int j=1;
    while(j<i&&p!=NULL)
    {
        j++;
        p=p->next;
    }
    if(p==NULL)
        return 0;
    else
    {
        q=p->next;
        p->next=q->next;
        delete q;
        return 1;
    }
}
void DeleteCF(LinkList *&L)
{
    ElemType temp;
    int j,k;
    LinkList *q,*p=L->next;
    for(j=0;p->next!=NULL&&p!=NULL;j++)
    {
        k=2+j;
        //cout<<"$"<<p->next->data<<endl;
        q=p->next;
        //cout<<"*     ";
        
        while(p->data!=q->data&&q!=NULL)
        {
            k++;
            q=q->next;
        }
        cout<<k<<"**"<<endl;
        if(q!=NULL)
            if(ListDelete(L,k,temp))
                cout<<"操作成功"<<endl;
            else
                cout<<"无法操作"<<endl;
        DispList(L);
        p=p->next;
        //cout<<"@"<<endl;
    }
}



void main()
{
    LinkList *la;
    ElemType b[]={1,2,3,4,3,6,1,8};
    CreateListR(la,b,8);
    DispList(la);
    DeleteCF(la);
    cout<<"$$$$$$$$$$"<<endl;
    DispList(la);

}
题目是删除单链表中重复数据,谢谢各位拉~~
搜索更多相关主题的帖子: next void include 
2011-03-22 14:49
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
void DeleteCF(LinkList *&L)
{
}

while(p->data!=q->data&&q!=NULL)
{
    k++;
    q=q->next;
}
导致崩溃
改成:
while(q!=NULL && p->data!=q->data)
{
    k++;
    q=q->next;
}
就行了

for(j=0;p->next!=NULL&&p!=NULL;j++)
 这个也可能导致崩溃的
应该这样for(j=0;p!=NULL && p->next!=NULL;j++)

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-03-22 20:40
lisypro
Rank: 4
等 级:业余侠客
威 望:3
帖 子:695
专家分:216
注 册:2005-9-25
收藏
得分:0 
程序太长了

长期承接管理系统
代做各种vb/ / vc小程序
QQ:82341763
手机:13623290828
群号 11619730
2011-03-30 19:16
快速回复:新学求教~标题要长~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012411 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved