| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1152 人关注过本帖
标题:单链表的建立和插入
只看楼主 加入收藏
aKARL
Rank: 1
等 级:新手上路
帖 子:36
专家分:6
注 册:2013-7-1
结帖率:20%
收藏
已结贴  问题点数:10 回复次数:11 
单链表的建立和插入
有1,2,3,4,5,6,8,9,10,11这10个数升序排列,现再加入7,依旧是升序排列
要求用单链表编写
2013-08-30 09:36
aKARL
Rank: 1
等 级:新手上路
帖 子:36
专家分:6
注 册:2013-7-1
收藏
得分:0 
本人一点单链表不会,求救
2013-08-30 09:37
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:3 
不会吧,你看看书呗!

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-08-30 19:03
aKARL
Rank: 1
等 级:新手上路
帖 子:36
专家分:6
注 册:2013-7-1
收藏
得分:0 
回复 3楼 不玩虚的
指针就没大弄明白,单链表就更没弄懂了,上次用数组做的还能自己搞定,这次要求用单链表是直接KO
2013-09-01 10:13
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:3 
先看看书上的单链表怎么构建的

Maybe
2013-09-02 23:13
hkcmd
Rank: 2
等 级:论坛游民
帖 子:37
专家分:46
注 册:2013-8-21
收藏
得分:3 
/**************************
*1,2,3,4,5,6,8,9,10,11
*加入7
***************************/

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define LEN 10
typedef struct node
{
    int date;
    struct node *next;
}*PNODE;

PNODE create_list(void);
bool charu_list(PNODE,int,int);
void transt_list(PNODE);

int main(void)
{
    PNODE p;
    p=create_list();
    printf("All is:\n");
    transt_list(p);
    printf("\nAll is:\n");
    charu_list(p,7,7);
    transt_list(p);   
    printf("\n");
    return 0;
}
PNODE create_list(void)
{
    int i;
    int a[]={
        1,2,3,4,5,6,8,9,10,11
    };
    PNODE head=(PNODE)malloc(sizeof(node));
    if(NULL==head)
    {
        printf("neicun feipei shibai!");
        exit(-1);
    }
    PNODE tail=head;
    tail->next=NULL;
    for(i=0;i<LEN;i++)
    {
        PNODE pnew=(PNODE)malloc(sizeof(node));
        if(NULL==pnew)
        {
            printf("neicun feipei shibai!");
            exit(1);
        }   
        pnew->date=a[i];   
        tail->next=pnew;   
        pnew->next=NULL;
        tail=pnew;
    }
    return head;
}
bool charu_list(PNODE p,int pos,int value)
{
     int i=0;
     PNODE v=p;
     while(NULL!=v && i<pos-1)
     {
         v=v->next;
         ++i;
     }
     if(i>pos-1 && NULL==v)
        return false;
     PNODE pnod=(PNODE)malloc(sizeof(node));
     if(NULL==pnod)
     {
         printf("feipei neicun shibai!");
         exit(-1);
     }
     pnod->date=value;
     PNODE r=v->next;
     v->next=pnod;
     pnod->next=r;
     return true;
}
void transt_list(PNODE head)
{
     PNODE p=head->next;
     while(NULL!=p)
     {
          printf("%d ",p->date);
         p=p->next;   
      }   
}
2013-09-02 23:22
hkcmd
Rank: 2
等 级:论坛游民
帖 子:37
专家分:46
注 册:2013-8-21
收藏
得分:0 
我突然发现我这个程序有error:我真希望有人给我指出来.
2013-09-04 23:47
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:3 
....

[ 本帖最后由 qunxingw 于 2013-9-5 18:40 编辑 ]

www.qunxingw.wang
2013-09-05 13:58
hkcmd
Rank: 2
等 级:论坛游民
帖 子:37
专家分:46
注 册:2013-8-21
收藏
得分:0 
真是太激动了,程序一直的问题无从下手,今天终于找到答案了。
这个一开始就疑惑为什么没有free,不是不用,而是不知道怎么用,然而也没有人告诉我,我就是一个瞎子。


 void transt_list(PNODE head)
 {
      PNODE p=head->next;
      while(NULL!=p)
      {
          printf("%d ",p->date);
          p=p->next;   
      }   
      p=head;
      while(NULL!=p)
      {
          free(p);
          p=p->next;   
      }   
}
这样子,就好多了。
让你等久了,楼主.
得到你的分,真是惭愧!
2013-09-11 19:13
hkcmd
Rank: 2
等 级:论坛游民
帖 子:37
专家分:46
注 册:2013-8-21
收藏
得分:0 
我突然觉得还应该加入一个结构体指针变量 s,因为直接用 p 会导致链表首地址发生变化。
void transt_list(PNODE head)
 {
       PNODE s=p;
       PNODE s=head->next;
       while(NULL!=s)
       {
           printf("%d ",s->date);
           s=s->next;   
       }   
       s=head;
       while(NULL!=s)
       {
           free(s);
           s=s->next;   
      }   
 }
2013-09-11 19:27
快速回复:单链表的建立和插入
数据加载中...
 
   



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

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