数据结构第三周-单链表的创建与遍历

#include<iostream>

using namespace std;

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef int Status;             //Status 是函数返回值类型,其值是函数结果状态代码。

typedef int ElemType;       //ElemType 为可定义的数据类型,此设为int类型

typedef struct LNode

{

  ElemType data;

  struct LNode *next;

}LNode,*LinkList;

Status InitList(LinkList &L)

{

  L=new LNode;

  L->next=NULL;

  return OK;

}

void CreateList_H(LinkList &L,int n)

{                                    

LNode *r,*p;

L=new LNode;

L->next=NULL;                                                                 

r=L;                                                                                     

for(int i=0;i<n;i++){

           p=new LNode;                                                        

           cin>>p->data;                                                         

           p->next=NULL;r->next=p;                                             

           r=p;                                                                           

}

}                           

int main()

{

  int n;

  LNode *L,*p;

  InitList(L);

  cin>>n;

  CreateList_H(L,n);

  p=L->next;

  if(p==NULL)

    {

     exit(ERROR);

    }

while(p->next!=NULL)

           {

                    cout<<p->data<<" ";

                    p=p->next;

           }

cout<<p->data;

cout<<endl;

return 0;

}

测试分析:1)最初使用前插法创建链表,导致输入的数倒序输出,之后换用后插法;

          2)同样是p=NULL的情况缺乏考虑

          3)题目要求最后一个数字后面不能有空格,于是改while(p!=NULL)为while(p->next!=NULL)

原文地址:https://www.cnblogs.com/xjsunshine/p/8682586.html