首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

双向链表数据输出异常

2012-04-23 
双向链表数据输出错误[codeC/C++][/code]#include iostream#include stdlib.h#define OK 1#define ER

双向链表数据输出错误
[code=C/C++][/code]
#include "iostream"
#include "stdlib.h"
#define OK 1
#define ERROR -1
typedef int Elemtype;
typedef int Stutaus;
using namespace std;

typedef struct DuLNode
{
int data;
struct DuLNode *next,*prior;
}DuLNode,*DuLinkList;

void Create_L(DuLinkList &L,int n)
{
L=(DuLinkList)malloc(sizeof(DuLNode));

L->next=L->prior=L;
for(int i=n;i>0;--i)
{
DuLNode *p=(DuLinkList)malloc(sizeof(DuLNode));
cin>>(p->data);
//p->next=L->next;
//L->next=p;
   
p->prior=L->next;
p=L->prior;
L->prior=p->next;
L=p->prior;
//p=L->next->prior;
//L->next->prior=p;
}
}

void Print_L(DuLinkList &L,int n)
{
  DuLinkList p;
int i=0;
  p=L;
while (i<n)
{
++i;
//p=p->next;
cout<<p->data;
}
cout<<endl;
}

void main()
{
int n;
DuLinkList La;
cout<<"please input data num: "<<endl;
cin>>n;

Create_L(La,n);
cout<<"data is:"<<endl;
Print_L(La,n);
}

[解决办法]

C/C++ code
void Create_L(DuLinkList &L,int n){L=(DuLinkList)malloc(sizeof(DuLNode));L->next=L->prior=L;for(int i=n;i>0;--i){DuLNode *p=(DuLinkList)malloc(sizeof(DuLNode));cin>>p->data;p->next=L->next;L->next->prior=p;p->prior=L;L->next=p;}}void Print_L(DuLinkList &L,int n){  DuLinkList p;int i=0;  p=L;while (i<n){++i;p=p->next;cout<<p->data<<" ";}cout<<endl;}
[解决办法]
链表需要自己多琢磨,多用笔画画.
不好说清楚的.

C/C++ code
#include "iostream"#include "stdlib.h"#define OK 1#define ERROR -1typedef int Elemtype;typedef int Stutaus;using namespace std;typedef struct DuLNode{    int data;    struct DuLNode* next, *prior;} DuLNode, *DuLinkList;void Create_L(DuLinkList& L, int n){    L = (DuLinkList)malloc(sizeof(DuLNode));    cin>>L->data;    L->next = L->prior = L;    for(int i = n-1; i > 0; --i)    {        DuLNode* p = (DuLinkList)malloc(sizeof(DuLNode));        cin >> (p->data);//p->next=L->next;//L->next=p;        p->next=L;        L->prior->next=p;        p->prior=L->prior;        L->prior=p; //       p->prior = L->next; //       p = L->prior; //       L->prior = p->next; //       L = p->prior;//p=L->next->prior;//L->next->prior=p;    }}void Print_L(DuLinkList& L, int n){    DuLinkList p;    int i = 0;    p = L;    while(i < n)    {        ++i;//p=p->next;        cout << p->data<<" ";        p=p->next;    }    cout << endl;}int main(){    int n;    DuLinkList La;    cout << "please input data num: " << endl;    cin >> n;    Create_L(La, n);    cout << "data is:" << endl;    Print_L(La, n);    return 0;} 

热点排行