| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 325 人关注过本帖
标题:<求助>链表的插入.删除.查找...
取消只看楼主 加入收藏
、镜花氺月
Rank: 2
等 级:论坛游民
帖 子:71
专家分:18
注 册:2010-11-5
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:2 
<求助>链表的插入.删除.查找...
程序代码:
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<stdlib.h>
/*存储*/
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode, *LinkList;
/*初始化*/
LinkList list(LinkList L)
{
    L=(LNode *)malloc(sizeof(LNode));
    if(!L)
        return 0;
    L->next =NULL;
    return L;
}
/*建立*/
LinkList creat(int n)
{
    LNode *L,*p,*q;
    int i;
    L=(LNode *)malloc(sizeof(LNode));
    L->next=NULL;
    q=L;
    for(i=1;i<=n;++i)
    {
        p=(LNode *)malloc(sizeof(LNode));
        printf("请输入第%d个元素",i);
        scanf("%d",&p->data);
        p->next=NULL;
        q->next=p;
    }
    return L;
}

/*元素的插入*/
int insert(LinkList L,int i, ElemType e)
{
    LNode *p,*s;
    int j;
    p=L;
    j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1)
        return 0;
    s=(LNode * )malloc(sizeof(LNode));
    s->data = e;
    s->next=p->next;
    p->next =s;
    return 1;
}
/*删除*/
int dele(LinkList L,int i,ElemType *e)
{
    LNode *p,*q;
    int j;
    p=L;
    j=0;
    while(p->next&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
        return 0;
    q=p->next;
    *e = q->data;
    p->next=q->next;
    free(q);
    return 1;
}
/*查找*/
int search(LinkList L, ElemType e)
{
    LNode *p;
    int i;
    p=L->next;
    i=1;
    while(p&&p->data!=e)
    {
        p=p->next;
        i++;
    }
    if(p== NULL)
        return 0;
    else 
        return 1;
}
/*输出*/
void printlinklist(LinkList L)
{
    LNode *p;
    p=L->next;
    printf("\n单链表为:");
    while(p)
    {
        printf("%d",p->data);
        p=p->next;
    }
}

/*主函数*/
int main()
{
    LinkList L;
    int n,i,e,status;
    printf("请输入单链表长度:");
    scanf("%d",&n);
    L=creat(n);
    printlinklist(L);
    status=insert(L,1,27);
    if(status)
    {
        printf("\n新的单链表:");
        printlinklist(L);
    }
    else
    {
        printf("\n插入失败");
        return 0;
    }
    status=dele(L,3,&e);//删除第3个元素
    if(status)
    {
        printf("\n删除的为:%d",e);
        printf("\n新的单链表:");
        printlinklist(L);
    }
    else
    {
        printf("\n删除失败!");
        return 0;
    }
    printf("\n请输入要查找的值:");
    scanf("%d",&e);
    i=search(L,e);
    if(i)
        printf("\n删除的元素位置为%d:",i);
    else
        printf("删除失败!");
    return 0;
}

为什么初始化会报错啊.

[ 本帖最后由 、镜花氺月 于 2011-6-20 10:26 编辑 ]
搜索更多相关主题的帖子: next 
2011-06-20 01:46
、镜花氺月
Rank: 2
等 级:论坛游民
帖 子:71
专家分:18
注 册:2010-11-5
收藏
得分:0 
回复 3楼 cosdos
没有. 这个;我发现了. 去掉还是报错.
2011-06-20 10:25
、镜花氺月
Rank: 2
等 级:论坛游民
帖 子:71
专家分:18
注 册:2010-11-5
收藏
得分:0 
回复 2楼 cosdos
我加了.
typedef int ElemType


之后好像建立部分有点问题. 打印链表的时候只打印最后一个元素
2011-06-20 10:56
快速回复:<求助>链表的插入.删除.查找...
数据加载中...
 
   



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

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