| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1555 人关注过本帖
标题:这个链表的逆序输出怎么做,最好带上注释(求源程序)
只看楼主 加入收藏
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
结帖率:69.23%
收藏
已结贴  问题点数:18 回复次数:4 
这个链表的逆序输出怎么做,最好带上注释(求源程序)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 源程序 最好 
2017-03-13 23:30
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:9 
程序代码:
st *fun(st *p,int s)

 { st *p1,*p2,*p3;
     p1=p->next;
     p2=p1->next;
     while(p1->i!=s)
      { p3=p2->next;
          p2->next=p1;
          p1=p2;
          p2=p3;
      }
    p->next->next='\0';
     p->next=p1;     
      return p;

 }

链表逆置
2017-03-14 09:59
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:9 
感觉双向链表逆置比单向链表简单~看了下代码~对九九来说笑笑就过了~有兴趣的可以试试~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-14 10:10
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
程序代码:
/*将带头结点的单向链表逆置
  例:若原链表从头至尾数据域为 2,4,6,8,10
      逆置后,链表从头至尾数据域为 10,8,6,4,2 */
#include "stdio.h"
#include "stdlib.h"
typedef struct tt

 { int i;
     struct tt *next;

 }st;

 st *creat()   // 输入0结束
 { st *p,*s,*r;
     int t;
     p=(st *)malloc(sizeof(st));
    r=p;
     scanf("%d",&t);
     while(t!=0)
      { s=(st *)malloc(sizeof(st));
          s->i=t;
          r->next=s;
          r=s;
          scanf("%d",&t);
      }
      r->next='\0';
      return p;

 }
st *fun(st *p,int s)  // s是最后一个结点的数据域
 { st *p1,*p2,*p3;
     p1=p->next;
     p2=p1->next;
     while(p1->i!=s)
      { p3=p2->next;
          p2->next=p1;
          p1=p2;
          p2=p3;
      }
    p->next->next='\0';
     p->next=p1;     
      return p;

 }     
void main()
{  st *p,*h,*p1;
    int s;
    p=creat();
    p1=p->next;
    printf("%d",p1->i);
    p1=p1->next;    
    while(p1!='\0')
     { 
         printf("->%d",p1->i);
         s=p1->i;
         p1=p1->next;
     }
     printf("\n");
    h=fun(p,s);
    h=h->next;
    printf("%d",h->i);
    h=h->next;
    while(h!='\0')
      { printf("->%d",h->i);
          h=h->next;
      }
}

完整的链表逆置程序
2017-03-14 11:09
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
收藏
得分:0 
回复 4楼 云团
#include<stdio.h>
#include<stdlib.h>

struct date{
int date;
struct date*next;
};

int main()
{
struct date*head=NULL;
struct date*p1;
//struct date*p;
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
p1=(struct date*)malloc(sizeof(struct date));
scanf("%d",&p1->date);

p1->next=head;//这两句怎么理解啊
head=p1;//

}
p1=head;
while(p1!=NULL)
{
printf("%d ",p1->date);
p1=p1->next;
}
}

刚学习小半年   ,   努力成为专家
2017-03-14 22:56
快速回复:这个链表的逆序输出怎么做,最好带上注释(求源程序)
数据加载中...
 
   



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

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