单链表的创建及遍历

读入n值及n个整数,建立单链表并遍历输出。

输入格式:

读入n及n个整数。

输出格式:

输出n个整数,以空格分隔(最后一个数的后面没有空格)。

输入样例:

在这里给出一组输入。例如:

2
10 5

输出样例:

在这里给出相应的输出。例如:

10 5



代码如下:

/*
填空:单链表的建立与遍历程序。
*/

#include<iostream>
using namespace std;

#define OK 1
#define ERROR 0

typedef int Status;
typedef int ElemType;

typedef struct LNode{
ElemType data; //数据域
struct LNode *next; //指针域
} LNode, *LinkList;

Status InitList( LinkList&L); //函数声明
void CreateList( LinkList &L,int n); //函数声明
void DisplayList( LinkList ); //函数声明
void DestroyList( LinkList ); //函数声明

int main()
{
LinkList L; //值传递
InitList( L ); //调用函数InitList
int n;
cin >> n;
CreateList( L, n );
DisplayList( L );
DestroyList( L );
return 0;
}

Status InitList(LinkList&L)
{
L = new LNode ;
L->next = NULL ;
return OK;
}

void CreateList( LinkList &L,int n )
//尾插法建立带头结点的有n个元素的链表
{
LNode *p, *r; //定义p与r指针

r = L ; //尾指针r指向头结点

for( int i=0; i<n; ++i ){
p = new LNode ; //生成新结点*p
cin >> p->data; //输入元素值
p->next= NULL;
r->next = p ; //将p插入到表尾
r = p; //r指向新的尾结点
}
}

void DisplayList( LinkList L )
//遍历带头结点的单链表
{
LNode *p =L->next ;
while ( p )
{ if(p->next==NULL)
{
cout<<p->data;}
else cout <<p->data<<" ";
p=p->next;


}

}

void DestroyList( LinkList L )
{//回收L的所有结点的空间
LNode *p = L, *q;
while ( p ) //当p指向结点不为空
{
q = p->next; //q指向p的下一结点
delete p; //回收p指向的结点空间
p = q; //p指向q指向的结点
}}

这是单链表最基本的运用,也是熟悉使用单链表的重要的一步

原文地址:https://www.cnblogs.com/fengwanthousand/p/10546007.html