| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 950 人关注过本帖
标题:c语言双向链表问题
只看楼主 加入收藏
luoye1994
Rank: 2
等 级:论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:4 
c语言双向链表问题
#include <iostream>
using namespace std;

typedef struct Node
{
    char str;
    struct Node *next;
    struct Node *front;
}node , *L_node;

int Initiate(L_node *L)
{
    node *p = NULL, *q = NULL;
    *L = (L_node)malloc(sizeof(node));
    (*L)->next = (*L)->front = NULL;
    p = (*L);
   
    for (int i = 0; i < 26; ++i)
    {
        q = (node *)malloc(sizeof(node));
        q->str = 'A' + i;
        
        q->front = p;
        q->next = p->next;
        
        p->next = q;

        p = q;
    }
    p->next = (*L)->next;
    (*L)->next->front = q;
   

   
    return 1;
}

void Print(L_node *L, int n)
{

    if (n > 0)
    {
        do
        {
            (*L) = (*L)->next;
        } while (--n);
    }
    if (n < 0)
    {
        do
        {
            (*L) = (*L)->front;
        } while (++n);
    }
   
}


int main()
{
    L_node head;
   
    Initiate(&head);
    Print(&head , -10);
    for (int i = 0; i < 26; ++i)
    {
        head = head->next;
        cout << head->str << " ";
        
    }
    cout << "  =========== " << endl;
    for (int i = 0; i < 5; ++i)
    {
        head = head->front;
        cout << head->str << " ";
    }
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: include c语言 
2016-09-12 19:48
luoye1994
Rank: 2
等 级:论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
收藏
得分:0 
我输入正数没有问题,我输入负数就有问题
2016-09-12 19:48
luoye1994
Rank: 2
等 级:论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
收藏
得分:0 
比如:我想输入正数3,打印defgh...xyzabc
          输入数-3,打印xyzabc...uvw

2016-09-12 19:50
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:30 
typedef struct Node
{
    char str;
    struct Node *next;
    struct Node *front;
}node , *L_node;//typedef只对前面的node做了别名设置,后面的*L_node只是声明了一个指针变量(全局的)
---------------------------------------------
程序的逻辑是错的。
1.int Initiate(L_node *L)执行完以后L->font==NULL,所以这个函数才不能用。
程序代码:
int Initiate(node *Head)//
{  

     node* L = (node*)malloc(sizeof(node));//这个环的A结点,
      node*temp=L;
      for (int i = 0; i < 26; ++i)
    {
        temp->next = (node *)malloc(sizeof(node));
        temp->str = 'A' + i;
        temp->next->front=temp;
        temp=temp->next;
    }
    temp->next = L;
    L->front = temp;
  *Head=L;
       return 1;
}
Printf函数也是错的,如果n<0,比如-3那么我们应该先逆时针经过A,Z,Y,到达X,然后从X出发顺时针输出一圈。
程序代码:
void Print(node *L, int n)
{
    while(n<0){L=L->front;n++;}
    for(int i=0;i<26;i++,L=L->next) printf("%c",L->str);
}

------------
以上代码部分我没有做过数据测试,可能存在问题,欢迎指正。


φ(゜▽゜*)♪
2016-09-12 21:05
luoye1994
Rank: 2
等 级:论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
收藏
得分:0 
非常感谢你!!
2016-09-13 17:13
快速回复:c语言双向链表问题
数据加载中...
 
   



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

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