| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1248 人关注过本帖
标题:创建一个单链表,输出该单链表,然后删除第i位上元素,若删除成功,输出新的 ...
只看楼主 加入收藏
zxq103051821
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-5-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
创建一个单链表,输出该单链表,然后删除第i位上元素,若删除成功,输出新的单链表,否则输出“无法删除”
创建一个单链表,输出该单链表,然后删除第i位上元素,若删除成功,输出新的单链表,否则输出“无法删除”
搜索更多相关主题的帖子: 元素 成功 
2012-09-05 16:58
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:3 
支持一下,  问问题是需要勇气的~~~
2012-09-05 18:26
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:3 
前几天刚写的,
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    node *next;
    int data;
}node;
node *create(int );
void display(node *);
void display1(node *);
int length(node *head);
node *search(node *head, int n);
node *search1(node *head, int n);
node *insert(node *, int , int );
node *deletenode(node *, int );
node *reversed(node *head);
int main(int argc, char **argv)
{
    int x;
    int y;
    int m,n;
    node *result;
    printf("输入要创建多长的链表:\n");
    scanf("%d",&x);
    result=create(x);
    printf("输入要删除第几个节点:\n");
    scanf("%d",&y);
//    printf("?????????????λ???\n");
//    scanf("%d,%d",&m,&n);
    //printf("????????????\n");
    //scanf("%d",&y);
    //result=insert(result,m,n);
//    result=search(result,y);
     //length(result);
    result=deletenode(result,y);
     //result=reversed(result);
    display(result);
    //display1(result);

    return 0;
}
node *create(int n)
{
    node *head,*p,*q;
    int i;
    head=(node *)malloc(sizeof(node));
    head->next=NULL;
    if(n>0)
    {
        p=head;
        for(i=0;i<n;i++)
        {
            q=(node *)malloc(sizeof(node));
            p->next=q;
            printf("第%d+1节点内容: \n",i);
            scanf("%d",&q->data);
            p=q;
        }
        p->next=NULL;
    }

    return head;
}
void display(node *head)
{
    node *p;
    p=head;
    while(p->next!=NULL)
    {
        printf("内容为:%d\n",p->next->data);
        p=p->next;
    }
}
int length(node *head)
{
    int len=0;
    node *p=head;
    while(p->next!=NULL)
    {
        len++;
        p=p->next;
    }
    printf("???????%d \n",len);
}
node *search(node *head,int n)
{
    node *p=head;
    int k=0;
    while(p->next!=NULL&&k<n)
    {
        p=p->next;
        k++;
    }
    if(p!=NULL)
    return p;
    else
    return NULL;
}
node *search1(node *head,int n)
{
    node *p=head;
    int k=0;
    while(p->next!=NULL&&k<n-1)
    {
        p=p->next;
        k++;
    }
    if(p!=NULL)
    return p;
    else
    return NULL;
}
void display1(node *head)
{
    node *p=head;
    printf("内容为:%d \n",p->data);
}
node *insert(node *head, int data, int n)
{
    node *p=head;
    node *q;
    int k=0;
    while(p->next!=NULL&&k<n)
    {
        p=p->next;
        k++;
    }
    if(p!=NULL)
    {
        q=(node *)malloc(sizeof(node));
        q->next=p->next;
        p->next=NULL;
        p->next=q;
        q->data=data;
        return head;
    }

    else
    return NULL;
}
node *deletenode(node *head, int n)
{
    node *p=head;
    int m;
    p=search1(head,n);
    if(p==NULL||p->next==NULL)
    return NULL;
    else
    {
        node *q=(node *)malloc(sizeof(node));
        q=p->next;
        p->next=p->next->next;
        m=q->data;
        printf("删除节点的内容:%d\n",m);
        q->next=NULL;
        free(q);
        q=NULL;
        return head;
    }
}
node *reversed(node *head)
{
    node *p=head->next;
    node *q;
    head->next=NULL;//???????????????
                    //??????????head->next=NULL???????????????
    while(q!=NULL)
    {
        q=p->next;
        p->next=head->next;
        head->next=p;
        p=q;
    }
    return head;
}
给你看个吧,里面有链表逆置,查找,删除之类的功能。按你题目要求我把其他功能注释掉了:
2012-09-07 07:38
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
感觉有几个问题问的比较重呀。
2012-09-08 23:09
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:3 
晕,不是吧,这么复杂!这几天刚学数据结构,还以为就是用伪码写的那样简单呢,换成c语言这么长!!
2012-09-11 22:54
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
收藏
得分:3 
好短的一段代码.........................

我只是个演员,还是业余的!!
2012-09-12 22:22
给我毅刀
Rank: 1
等 级:新手上路
帖 子:30
专家分:9
注 册:2012-9-2
收藏
得分:3 
他给你的代码有好多功能,你自己截取自己需要的不就行了
2012-09-13 12:20
zhangsujun
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-10-17
收藏
得分:0 
感觉好长啊。。。。。
2012-10-17 21:25
tshag
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-10-10
收藏
得分:0 
非常感谢,数据结构刚刚学,正需要一个这样的代码模仿练手
2012-11-02 18:11
快速回复:创建一个单链表,输出该单链表,然后删除第i位上元素,若删除成功,输 ...
数据加载中...
 
   



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

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