读入n值及n个整数,建立单链表并遍历输出。
输入格式:
读入n及n个整数。
输出格式:
输出n个整数,以空格分隔(最后一个数的后面没有空格)。
输入样例:
在这里给出一组输入。例如:
2
10 5
输出样例:
在这里给出相应的输出。例如:
10 5
代码如下:
/*
填空:单链表的建立与遍历程序。
*/
#include
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
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<
else cout <
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指向的结点
}}
这是单链表最基本的运用,也是熟悉使用单链表的重要的一步