單鏈表的創建及遍歷


讀入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指向的結點
}}

 

這是單鏈表最基本的運用,也是熟悉使用單鏈表的重要的一步

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com