?? 001.cpp
字號:
#include<iostream>
using namespace std ;
struct List
{
int money ;//鏈表中存放的數據
List *pNext ;//指向下一節點的指針
List()//構造函數
{
//初始化指針
pNext = NULL ;
}
};
//鏈表的頭(全局)
List *ListHead = NULL ;
//添加函數
void AddList( int a )
{
//新的節點,分配空間
List * pNew = new List();
//賦值
pNew->money = a;
//如果頭為空,新節點賦給頭
if( ListHead == NULL )
{
ListHead = pNew;
}
else//否則
{
//循環往下找,找到空的位置
for( List *pTemp = ListHead; pTemp->pNext != NULL; pTemp = pTemp->pNext );
//將新的節點賦給空的位置
pTemp->pNext = pNew;
}
}
//打印函數
void Print()
{
//頭為空
if(ListHead == NULL)
{
cout<<"鏈表為空"<<endl;
}
else//否則
{
//一個(代替頭的)臨時的節點循環的遍歷整個鏈表,直到為空
for(List * pTemp = ListHead; pTemp != NULL; pTemp = pTemp ->pNext)
{
//每次遍歷打印一個節點的值
cout << pTemp->money << endl ;
}
}
}
//刪除表(節點的值)
bool deleteList ( const int &x )
{
//如果頭為空
if( ListHead == NULL )
{
cout << "鏈表為空,無法刪除!" << endl ;
return false;
}
else//頭不為空
{
//如果刪除的是頭
if( ListHead->money == x )
{
//臨時節點代替頭
List *pTemp = ListHead ;
//頭的下一個作為頭
ListHead = ListHead->pNext ;
//刪除掉原來代替頭的指針
delete(pTemp);
//指針賦空
pTemp = NULL ;
cout<< "刪除的是第一個元素!" << endl ;
return true;
}
else//刪除的不是頭
{
//臨時節點代替頭
List *pTemp = ListHead ;
//循環遍歷鏈表
while( pTemp->pNext != NULL )
{
//如果找到要刪除的節點,跳出循環
if( pTemp->pNext->money == x )
break ;
pTemp = pTemp->pNext ;
}
//如果刪除的節點不是空的
if(pTemp->pNext != NULL)
{
//臨時節點代替要刪除的節點
List *pTemp2 = pTemp->pNext ;
//將要刪除的節點的下一個節點賦給原來的節點
//要刪除的節點的下一個代替原來的位置
pTemp->pNext = pTemp2->pNext ;
//刪除掉臨時節點
delete(pTemp2);
pTemp2 = NULL ;
cout<< "刪除的是鏈表中除第一位的某個元素!" << endl ;
return true;
}
else
{
cout<< "鏈表中沒有這樣的元素!" << endl ;
return false;
}
}
}
return false;
}
//刪除表
void DeleteList( const int &a )
{
if ( !ListHead )
{
cout << "空表" << endl ;
return ;
}
else
{
//如果刪的是頭
if ( ListHead->money == a )
{
//
List *pTemp = ListHead ;
ListHead = ListHead->pNext ;
delete pTemp ;
pTemp = NULL ;
}
else
{
List *pTemp = ListHead ;
while ( pTemp->pNext->money != a )
{
pTemp = pTemp->pNext ;
if ( !pTemp->pNext )
{
cout << "表里沒這個東西!" << endl ;
return ;
}
}
List *pTemp1 = pTemp->pNext ;
pTemp->pNext = pTemp->pNext->pNext ;
delete pTemp1 ;
pTemp1 = NULL ;
}
}
}
//插入表 值 位置
void InsertList( const int &a, const int n )
{
//新節點
List *pNew = new List() ;
pNew->money = a ;
//頭為空,就給頭
if ( !ListHead )
{
ListHead = pNew ;
}
else//否則
{
//如果位置編號小于1
if ( n < 1 )
{
//將新節點給頭
//現有的頭作為新節點的下一個
pNew->pNext = ListHead ;
//新節點作為頭
ListHead = pNew ;
}
else//如果n不小于1
{
//臨時節點代替頭
List *pTemp = ListHead ;
//循環遍歷鏈表,找到n的位置
for ( int i = 1; i < n; i++ )
{
pTemp = pTemp->pNext ;
//如果鏈表中節點的數量每有n那么多
if ( !pTemp->pNext )
{
//新節點給表的尾
pTemp->pNext = pNew ;
return ;
}
}
//要插入位置的節點先賦給新節點的下一個節點
pNew->pNext = pTemp->pNext ;
//讓新節點代替原來的位置
pTemp->pNext = pNew ;
}
}
}
void main ()
{
AddList( 9 );
AddList( 10 );
AddList( 5000 );
AddList( 1000000 );
AddList( 1500 );
AddList( 100 );
//Print();
// deleteList(100);
DeleteList( 9 ) ;
DeleteList( 10 ) ;
DeleteList( 1500 ) ;
InsertList( 10050, 10 ) ;
Print();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -