c++怎么實現單鏈表反轉然后交錯重連和稀疏矩陣

本篇內容主要講解“c++怎么實現單鏈表反轉然后交錯重連和稀疏矩陣”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“c++怎么實現單鏈表反轉然后交錯重連和稀疏矩陣”吧!

專注于為中小企業提供成都做網站、網站制作、成都外貿網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業本溪免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上千余家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。

/******
一leetcode題目
 1 2 3 4 n
 1 n-1 2 n-2 3 n-3
 *****/
 #include<iostream>
#include<assert.h>
#include<vector>//容器--類模板
#include<stdlib.h>//利用隨機值
#include<time.h>
using namespace std;
  
#define N 1000 
#define K 100
 typedef struct node
{
    int x;
      
    node *next;
public:
    node():x(1) ,next(NULL){}
    node(int a):x(a), next(NULL){}
}node;
int xx[]={0,7,6,5,4,3,2,1,11,12,0};int i=0; 
void  linkcreat(node*head)
{
if(head==NULL)
{
  head=new node;
}
head->x=xx[i++];
while(i<10)
{
node *add=new node(xx[i++]);
add->next=head->next;
head->next=add;
}
}
void show(node *head)
{
node *p=head;
 while(p)
{
cout<<p->x<<" ";
p=p->next;
}
cout<<endl;
} 
  
void V(node *&head) 
{ 
 node *newhead=head;
node *p=head;
node *q=head;
node *t = NULL;
  while(p->next!=NULL)
  {
     q=p;
     p=p->next;
     q->next=t;
     t=q;
    
   }
 head=p;
 p->next=q;
  
}
void V(node *&head,int k)  
{ 
node *newhead=head;
node *p=head;
node *q=head;
node *t = NULL;
  while(k--)
  {
     q=p;
     p=p->next;
     q->next=t;
     t=q;
   }
 
 head=q;
 newhead->next=p;
   
}
 void VV(node *&head)  
 {//快慢指針找到中間結點
     node *p=head;
     node *q=head;
      while(p->next->next!=NULL)
     {
         p=p->next->next;
         q=q->next;
     }
     cout<<q->x<<endl;
 //反轉后面的結點
 p=q->next;
node *qq=q->next;
node *t = NULL;
  while(p->next!=NULL)
  {
     qq=p;
     p=p->next;
     qq->next=t;
     t=qq;
   }
  p->next=qq;
 
 q->next=p;
 //從新鏈接合并
    node *pp=head;
   q->next=NULL;
     while(p->next!=NULL)
{
   t=p;p=p->next;
   t->next=pp->next;
   pp->next=t;
    pp=pp->next->next; 
 }  
  q->next=p;
 }
 
int main()
{
     node *head=new node(1);
      linkcreat(head); 
         show(head);
      VV(head);
 show(head);
}
/**********
#include"wz.h"


template <class T>
struct element
{
  int row, col; //行數、列數
  T item; //元素值
};
const int MaxTerm=100;
template <class T>
class SparseMatrix
{
	public:
		SparseMatrix(){};
		SparseMatrix(int intmu,int intnu,int inttu,element<T> datatemp[]);//有參構造函數,初始化稀疏矩陣
		~SparseMatrix(){}; //析構函數,釋放存儲空間
		element<T> GetMatrix(int intnumber);//輸出下標對應的數組元素
		void Prt();//顯示三元組順序表
		void Trans1(SparseMatrix<T> &B);//直接取、順序存的矩陣轉置算法
		void Trans2(SparseMatrix<T> A, SparseMatrix<T> &B);//順序取、直接存的矩陣轉置算法
	private:
		element<T> data[MaxTerm]; //矩陣非零元素
		int mu, nu, tu;   //行數、列數、非零元個數
};



#endif

template <class T>
SparseMatrix<T>::SparseMatrix(int intmu,int intnu,int inttu,element<T> datatemp[])
{
	if (inttu >MaxTerm ) throw "構造函數的初始化參數不正確";
	mu = intmu;nu = intnu;tu = inttu;
	for(int i=0;i<inttu;i++)
	{
		data[i] = datatemp[i];
	}
	
}

template <class T>
element<T> SparseMatrix<T>::GetMatrix(int intnumber)
{
	if(intnumber>=tu || intnumber < 0) throw "輸入位置不正確";
	return data[i];

}

 
template <class T>
void SparseMatrix<T>::Prt()
{
	 
	for(int i=0;i<tu;i++)
	{
		cout<<data[i].col<<" "<<data[i].row<<" "<<data[i].item<<"\n";
	}
	
}


 
template <class T>
void SparseMatrix<T>::Trans1(SparseMatrix<T> &B)
{ 
	int pb,pa;
	B.mu=this->nu; B.nu=this->mu; B.tu=this->tu;//設置行數、列數、非零元素個數 

	if (B.tu>0) //有非零元素則轉換
	{
		
		pb = 0;
    for (int col=0; col<this->nu; col++)  //依次考察每一列
			for (pa=0; pa<this->tu; pa++)  //在A中掃描整個三元組表
          if (this->data[pa].col==col ) //處理col列元素
					{  
                B.data[pb].row= this->data[pa].col ;
                B.data[pb].col= this->data[pa].row ;
                B.data[pb].item= this->data[pa].item;
                pb++;
          }

	}  
}

 
template <class T>
void SparseMatrix<T>::Trans2(SparseMatrix<T> A, SparseMatrix<T> &B)
{
	int i,j,k,num[MaxTerm],cpot[MaxTerm];
	B.mu=A.nu;  B.nu=A.mu;  B.tu=A.tu;//設置行數、列數、元素個數
	if (B.tu>0)  //有非零元素則轉換
	{
	for (i=0; i<A.nu; i++)    //A中每一列非零元素的個數初始化為0
		num[i]=0;
  for (i=0; i<A.tu; i++)//求矩陣A中每一列非零元素的個數
  {
		j= A.data[i].col;     //取三元組的列號
    num[j]++;
  }  
	cpot[0]=0;     //A中第0列第一個非零元素在B中的位置為0
	for (i=1; i<A.nu; i++)  //求A中每一列第一個非零元素在B中的下標
	cpot[i]= cpot[i-1]+num[i-1];
	for (i=0; i<A.tu; i++)//掃描三元組表A
  {
		j=A.data[i].col;      //當前三元組的列號
    k=cpot[j]; //當前三元組在B中的下標
    B.data[k].row= A.data[i].col ;
    B.data[k].col= A.data[i].row ;
		B.data[k].item= A.data[i].item;
		cpot[j]++;             //預置同一列的下一個三元組的下標
	}  
	}
}
 
int main()
{
	try
	{
		//建立一個element<int>類型的數組(A)
		element<int> elementtemp,elementtemp3,elementtemp2;
		elementtemp.col=0;elementtemp.row = 0 ;elementtemp.item = 15;
		elementtemp2.col=1;elementtemp2.row = 2 ;elementtemp2.item = 16;
		elementtemp3.col=1;elementtemp3.row = 0 ;elementtemp3.item = 17;
		element<int> A[3];A[0] = elementtemp;A[1] = elementtemp2;A[2] = elementtemp3; 

		SparseMatrix<int> sparsematrixB;//構造三元組順序表來存儲轉置后的三元組順序表
		SparseMatrix<int> sparsematrixA(3,3,3,A);//構造三元組順序表
		cout<<"源三元組順序表如下:"<<"\n";
		sparsematrixA.Prt();//顯示三元組順序表
		sparsematrixA.Trans1(sparsematrixB);
		cout<<"使用直接取、順序存轉置算法轉置后的三元組順序表如下:"<<"\n";
		sparsematrixB.Prt();//顯示三元組順序表
		sparsematrixA.Trans2(sparsematrixA,sparsematrixB);
		cout<<"使用順序取、直接存轉置算法轉置后的三元組順序表如下:"<<"\n";
		sparsematrixB.Prt();//顯示三元組順序表
	}
	catch(char* e)
	{
		cout<<e;
	}


  return 0;
}
************/

到此,相信大家對“c++怎么實現單鏈表反轉然后交錯重連和稀疏矩陣”有了更深的了解,不妨來實際操作一番吧!這里是創新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

網站名稱:c++怎么實現單鏈表反轉然后交錯重連和稀疏矩陣
標題URL:http://m.kartarina.com/article36/pipppg.html

成都網站建設公司_創新互聯,為您提供ChatGPT網站營銷品牌網站制作商城網站網站維護動態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
主站蜘蛛池模板: 久久久久亚洲av无码尤物| 伊人蕉久中文字幕无码专区| 国产精品亚洲一区二区无码| 亚洲精品无码专区久久同性男| 无码人妻精品一区二区三区99不卡 | 少妇无码一区二区三区免费| 中文字幕人成无码免费视频| 久久久久无码精品亚洲日韩| 亚洲AV成人无码网站| 亚洲av无码日韩av无码网站冲| 精品人妻中文无码AV在线| 国产∨亚洲V天堂无码久久久| 国产啪亚洲国产精品无码| 无码精品人妻一区| 无码中文字幕乱在线观看| 午夜亚洲av永久无码精品| 无码国产午夜福利片在线观看| 亚洲无码日韩精品第一页| 亚洲av中文无码字幕色不卡| 日韩免费人妻AV无码专区蜜桃| 国产精品午夜无码av体验区| 亚洲AV无码AV吞精久久| 在线看无码的免费网站| 无码人妻丰满熟妇片毛片| 中文无码人妻有码人妻中文字幕| 午夜无码一区二区三区在线观看| 亚洲欧洲免费无码| 在线精品免费视频无码的| 亚洲AV无码专区在线亚| 亚洲AV无码精品无码麻豆| 自拍偷在线精品自拍偷无码专区| 一本大道东京热无码一区| 永久无码精品三区在线4| 无码高潮少妇毛多水多水免费| 久久无码国产专区精品| 精品欧洲av无码一区二区14| 精品无码国产自产拍在线观看| 最新无码人妻在线不卡| 无码国产精品一区二区免费虚拟VR| 亚洲国产精品无码一线岛国| 中文字幕丰满乱孑伦无码专区|