标题:新手求助啊~~~一道单链表逆序的题目
只看楼主
Ivan0325
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-8-9
结帖率:0
已结贴  问题点数:20 回复次数:2 
新手求助啊~~~一道单链表逆序的题目
C语言基础很差啊,求助一道单链表逆序,框架已经给出,只需要3个函数(建立,逆序,输出),必须按照这个框架来写啊。。。。写了N次都不通过,所以请教各位大大,麻烦大大们帮忙填一下那三个函数,先谢了哈~~~~~~

数据结构
typedef struct __TestList
{
   int value;
   struct __TestList *next;
}TestList,*p1,*p2;

要求实现单链表逆序输出。
TestList converse(TestList **ListHead)

TestList initList(TestList **ListHead)

void outputList(TestList *ListHead)

void main(void)
{
   TestList *head = NULL;

   initList(&head);
   outputList(head);
   converse(&head);
   outputList(head);
   
   return;
}
搜索更多相关主题的帖子: converse value C语言 
2011-08-09 21:54
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
得分:10 
     初始化和输出应该是很基本的操作了,逆置单链表可以设一个位置指针从第一个节点开始依次把访问的节点插入在头结点之后,再设一个指针保存下一次要访问的位置,依次到尾指针为NULL即为完成。很多资料上都有参考,建议楼主要多自己动手哦,明白思想最好。
2011-08-10 00:55
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
得分:10 
纯练习,试了一些输入,结果是对的,供楼主参考

#include <stdio.h>
#include <stdlib.h>

typedef struct testlist
{
    int value;
    struct testlist *next;
}testlist,*p1,*p2;

testlist initlist(testlist **listhead)
{
       testlist *p1,*p2;
       *listhead=p1=p2=(testlist *)malloc(sizeof(testlist));
       scanf("%d",&p1->value);
       p1=(testlist *)malloc(sizeof(testlist));
       scanf("%d",&p1->value);
       while(p1->value != 0)
       {
           p2->next=p1;
           p2=p1;
           p2->next=NULL;
           p1=(testlist *)malloc(sizeof(testlist));
           scanf("%d",&p1->value);
       }   
}

testlist converse(testlist **listhead)
{
    testlist *p0,*p1,*p2;
    p0=p1=*listhead;
    while(p1->next != NULL)
        p1=p1->next;
    *listhead=p2=p1;
    while(p2->next != p0)
    {
        p1=p0;
        while(p1->next != p2)
            p1=p1->next;
        p2->next=p1;
        p2=p1;
    }
    p0->next=NULL;
}

void outputlist(testlist *listhead)
{
    testlist *p1;
    p1=listhead;
    while(p1->next != NULL)
    {
        printf("%d  ",p1->value);
        p1=p1->next;
    }
    printf("%d\n",p1->value);
}

int main(void)
{
    testlist *head=NULL;
    initlist(&head);
    outputlist(head);
    converse(&head);
    outputlist(head);
}
2011-08-10 02:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-347188-1-1.html




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

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