| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8576 人关注过本帖, 1 人收藏
标题:简单有序链表的创建和查询修改
只看楼主 加入收藏
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
结帖率:80%
收藏(1)
已结贴  问题点数:20 回复次数:14 
简单有序链表的创建和查询修改
(1)建立一个单链表 21  3  15  27  11  18,并输出该链表;
(2)输入序号n,查找序号为n的结点,并输出;
(3)输入值x,查找值为x的结点,并输出;
(4)插入结点: 输入序号 n和值x。在序号为n的结点后插入x,并输出该链表;
(5)删除结点: 输入序号 n,册除序号为 n 的结点,并输出该链表。
自己的代码写了不敢发出来,表示改了一天,未果,已卒
大神有空请上源代码,或者帮我改代码
搜索更多相关主题的帖子: 源代码 
2017-04-02 21:17
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
关于链表的帖子多天上去了,自己搜索一下呗。
点搜索有奇效。

图片附件: 游客没有浏览图片的权限,请 登录注册

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-02 21:27
飞机火车
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-1-23
收藏
得分:0 
...好吧我还是继续改

没有解决不了的事情,除非逻辑本身是错的
2017-04-02 22:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
先实现第一步  馒头要一口一口的吃
程序代码:
#include <stdio.h>
#include <malloc.h>

#define N 6

typedef struct data
{
     int value;
     struct data* next;
}tdata,*pdata;

pdata linkcre(void)
{
    pdata head,pfirst,psecond;
    int cr[6]={21,3,15,27,11,18};
    pfirst=(pdata)malloc(sizeof(tdata));
    head=pfirst;
    head->value=0;
    psecond=pfirst;
    int i;
    for(i=0;i<N;i++)
    {
        pfirst=(pdata)malloc(sizeof(tdata));
        pfirst->value=cr[i];
        pfirst->next=NULL;
        psecond->next=pfirst;
        psecond=pfirst;
    }
    return head;
}

void prnlist(pdata head)
{
    pdata pfirst=head->next;
    while(pfirst!=NULL)
    {
        printf("%d ",pfirst->value);
        pfirst=pfirst->next;
    }
    printf("\n");
}

int main(int argc, char* argv[])
{
    pdata  head;
    head=linkcre();
    prnlist(head);
    return 0;
}



DO IT YOURSELF !
2017-04-03 21:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
第二问 也完成
程序代码:
void searchlistp(pdata head,int pos)
{
    pdata pfirst=head->next;
    int i=0;
    while(pfirst!=NULL)
    {
        i++;
        if(i==pos) break;
        pfirst=pfirst->next;
    }
    if(i<pos) printf("无此序列号 你输入的数值大概有些大\n");else    printf("%d \n",pfirst->value);
}

int main(int argc, char* argv[])
{
    pdata  head;
    head=linkcre();
    prnlist(head);
    printf("请输入待查找的序号:");
    int pos=0;
    scanf("%d",&pos);
    searchlistp(head,pos);
    return 0;
}




[此贴子已经被作者于2017-4-4 16:51编辑过]


DO IT YOURSELF !
2017-04-03 21:52
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
第三问也完毕
程序代码:
void searchlistv(pdata head,int value)
{
    bool flag=false;
    pdata pfirst=head->next;
    while(pfirst!=NULL)
    {
        if(pfirst->value==value)
        {
            flag=true;
            break;
        }
        pfirst=pfirst->next;
    }
    if(!flag) printf("你输入的数值不存在于链表之中\n");else printf("%d \n",pfirst->value);
}
int main(int argc, char* argv[])
{
    pdata  head;
    head=linkcre();
    prnlist(head);
    printf("请输入待查找的序号:");
    int pos=0;
    scanf("%d",&pos);
    searchlistp(head,pos);
    printf("请输入待查找的值:");
    int value=0;
    scanf("%d",&value);
    searchlistv(head,value);
    return 0;
}




DO IT YOURSELF !
2017-04-03 21:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
第四问和第五问是一样的
都涉及到 修改链条  以保持链条的一致性  这个今天没时间写了  先到这里

DO IT YOURSELF !
2017-04-03 22:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
第四问 完成  欢迎测试 寻找bug
程序代码:
void inslist(pdata head,int pos,int value)
{
    pdata pfirst=head->next;
    int i=0;
    while(pfirst!=NULL && pos>0)
    {
        i++;
        if(i==pos) break;
        pfirst=pfirst->next;
    }
    pdata ptmp;
    if(pos==0) ptmp=head->next; else ptmp=pfirst->next;
    pdata pins=(pdata)malloc(sizeof(tdata));
    if(pos==0) head->next=pins;else pfirst->next=pins;
    pins->value=value;
    pins->next=ptmp;
}

int main(int argc, char* argv[])
{
    pdata  head;
    head=linkcre();
    prnlist(head);
    inslist(head,0,56); //测试头部插入
    prnlist(head);
    inslist(head,5,777);   //测试中间插入
    prnlist(head);
    inslist(head,8,99999);  //测试尾部插入
    prnlist(head);
    printf("请输入待查找的序号:");
    int pos=0;
    scanf("%d",&pos);
    searchlistp(head,pos);
    printf("请输入待查找的值:");
    int value=0;
    scanf("%d",&value);
    searchlistv(head,value);
    return 0;
}




DO IT YOURSELF !
2017-04-04 16:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
第五问
程序代码:
//看大虾们的代码  删除链表 还有一个释放节点指针的步骤
//我这里直接省了 把那块内存直接丢掉了
void dellist(pdata head,int pos)
{
    if(pos==0)
    {
        printf("根节点不可删除\n");
        return;
    }
    pdata pfirst=head->next;
    pdata ptmp=pfirst;
    int i=0;
    while(pfirst!=NULL && pos>1)
    {
        i++;
        if(i==pos) break;
        ptmp=pfirst;
        pfirst=pfirst->next;
    }
    if(pos==1) head->next=head->next->next; else ptmp->next=pfirst->next;

}

int main(int argc, char* argv[])
{
    pdata  head;
    head=linkcre();
    prnlist(head);
    inslist(head,0,56); //测试头部插入
    prnlist(head);
    inslist(head,5,777);   //测试中间插入
    prnlist(head);
    inslist(head,8,99999);  //测试尾部插入
    prnlist(head);
    dellist(head,1);
    prnlist(head);
    printf("请输入待查找的序号:");
    int pos=0;
    scanf("%d",&pos);
    searchlistp(head,pos);
    printf("请输入待查找的值:");
    int value=0;
    scanf("%d",&value);
    searchlistv(head,value);
    return 0;
}




DO IT YOURSELF !
2017-04-04 16:50
凉生
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-4-5
收藏
得分:0 
只有第一个能运行,下面的都有错误,我用的VC++,加了头文件还是不行
2017-04-05 11:35
快速回复:简单有序链表的创建和查询修改
数据加载中...
 
   



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

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