1. 程式人生 > >迴圈連結串列佇列C++程式設計--楊輝三角

迴圈連結串列佇列C++程式設計--楊輝三角

楊輝三角原理 下一行的資料都是有上一行對應的兩個資料相加得到,第一行資料就只有一個1,最左邊和最右邊沒有資料就用0替代                     1                  1    1               1    2   1             1   3    3  1            1  4   6  4  1          1  5 10 10 5 1        ...... 一般為方便運算,會在左右兩邊加0; 下面的程式中,頭結點(Q.rear->next)的資料為0,用來表示左右兩邊的0, 0 -> 1 -> 3 -> 3 -> 1 -> 0 中的零是指同一個結點(頭結點)中的0;頭結點的下一節點和尾指標永遠為1;輸出時不輸出0(即不輸出頭結點資料) 下面的程式碼若輸入4,即只輸出4行;則輸出為 1 1 1 1 2 1 1 3 3 1 #include<iostream> #include<stdlib.h> using namespace std; //定義連結串列結點結構 typedef struct QNode{ int data;                            //儲存資料 struct QNode *next;         //next指標指向下一節點(儲存下一節點的地址) }QNode,*QueuePtr;                //定義普通結構型變數;指標型結構變數(可以不定義,只需要在普通型變數後面加*和基本變數一樣) //定義連結串列結構標量 typedef struct{ QueuePtr rear;                //尾指標 }LinkQueue; //將資料e插入連結串列Q int EnQueue(LinkQueue &Q, int e){ QNode *p; p=new QNode; if(!p)exit(-1);             //防止出現p指向空地址 //將p結點放入尾結點後面 p->data=e;  p->next=Q.rear->next; Q.rear->next=p; Q.rear=p; return 1; } //初始化連結串列 int InitQueue(LinkQueue &Q){ Q.rear=new QNode; if(!Q.rear)exit(-1);      //判斷Q.rear是否為空 Q.rear->next=Q.rear;    //迴圈連結串列的條件,尾結點的next指標指向頭結點 Q.rear->data = 0;         //頭結點資料初始化為0;相當於0  1   0 return 1; } //楊輝三角的運算及輸出 void tri(LinkQueue &Q, int n){ cout<<1<<endl; for(int i = 1; i < n; i++){ QNode *p; int elem1,elem2; p = Q.rear->next;     elem1 = p->data;    //預先儲存p->data的資料 while(p->next->data!=0){ elem2 = p->next->data;       //預先儲存p->next->data的資料 p->next->data = elem1 + elem2;      //將上一行的運算結果放入p->next->data p = p->next;                   //更改p為下一節點 elem1 = elem2;            //更換elem1和elem2的資料,相當於elem1預先儲存p->data的資料 cout<<p->data<<" ";      //輸出p->data,可用elem1代替,空格隔開 } EnQueue(Q,1);         //為尾結點插入1,並輸出  -- 尾指標永遠為1 cout<<1; cout<<endl; } } int main(){ int n; cin>>n; LinkQueue Q;   //建立連結串列 InitQueue(Q);    //初始化連結串列 EnQueue(Q,1);  //為第二節點插入1;到此資料鏈表擁有兩個結點和資料0和1 tri(Q, n); }

相關推薦

迴圈連結串列佇列C++程式設計--三角

楊輝三角原理 下一行的資料都是有上一行對應的兩個資料相加得到,第一行資料就只有一個1,最左邊和最右邊沒有資料就用0替代                     1                  1    1               1    2   1

資料結構學習之鏈佇列c++實現三角

#ifndef LINKQUEUE_H #define LINKQUEUE_H #include <iostream> #include <assert.h> using namespace std; template <class T>

資料結構學習筆記-迴圈連結串列C語言實現)

  迴圈連結串列的概念主要就是讓單鏈表的尾節點的指標不為空並且指向頭節點。像這樣的迴圈連結串列和普通單鏈表除了判斷條件幾乎沒有任何區別,判斷條件就是從p->next是否為空改為p->next是否等於頭節點,如果等於頭節點則迴圈結束。#include <std

雙向迴圈連結串列c++)

#include<iostream> using namespace std; struct ListNode { ListNode() :_data(0) ,_prev(0) , _next(0) {} ListNode( c

約瑟夫環問題(迴圈連結串列實現C

約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。 以下是程式碼實現(c語

利用迴圈佇列列印輸出三角

對於計算機專業的童鞋來說,學習每一門專業課,列印楊輝三角總是一個亙古不變的話題,這不,連《資料結構》這麼高大上的科目,也通過迴圈佇列的實現來找上了我們。 首先,先來大致解釋一下什麼是迴圈佇列。回憶起學習一般的線性表和特殊的線性表—棧時,我們都是先去學習其順序結構,因為順序結

c語言】C語言三角

楊輝三角是我們從初中就知道的,現在,讓我們用C語言將它在計算機上顯示出來。 在初中,我們就知道,楊輝三角的兩個腰邊的數都是 1,其它位置的數都是上頂上兩個數之和。這就是我們用C語言寫楊輝三角的關鍵之一。 在高中的時候我們又知道,楊輝三角的任意一行都是的二項式係數,n 為行數減 1。也就是

C語言三角

在螢幕上列印楊輝三角,行數可控,例如:         1         1 1         1 2 1 &nbs

從演算法學起C語言--三角

轉載請註明出處,珍惜下勞動成果撒~~ 背景說明: 楊輝三角,又稱帕斯卡三角形,巴斯卡三角形(外國貨這麼叫),有史為證源於中國。 1261年,我國南宋數學家楊輝在他的著作《詳解九章演算法》中記載著一張珍貴的圖形--------“開方作法本源”圖。根據楊輝自注,此圖“出《

利用迴圈佇列列印三角c語言實現)

#include<stdio.h> #include<malloc.h> #include<stdlib.h> #define MAXQSIZE 200 typedef int QElemType; typedef stru

C 將一個單鏈表拆成3個迴圈連結串列,其中一個是純數字,一個純字母,一個其他字元

前面相關操作在這呢,這個函式依託於此 //結構體 typedef struct Node { ElementType data; struct Node * next; } LNode, * LinkNode; //將一個單鏈表拆成3個迴圈連結串列,其中一個是純數字

C語言_雙向迴圈連結串列的基本操作

目錄: 1、初始化 2、頭部插入 3、頭部刪除 4、尾部插入 5、尾部刪除 6、列印連結串列 7、任意位置插入 8、查詢值為data的節點 9、指定位置刪除 10、銷燬連結串列 ###1、初始化: 建立一個節點,給節點賦值為0;因為是迴圈連結串列,所以讓它的_pNext

C++ 迴圈連結串列基本演算法

C++ 迴圈連結串列基本演算法 #ifndef CLinkList_h #define CLinkList_h #include <iostream> using namespace std; template <class T> struct Node{ T data

約瑟夫環,魯智深吃饅頭之類的問題總結c++(不用迴圈連結串列

今天看見這一類的題,覺得用迴圈連結串列太麻煩了,就想用某一種方法來代替迴圈連結串列,總結如下。 大致題意 n 個人圍城一圈,從第一個人開始順序編號為1到n。從第1個人從1開始報數,數到3的人出圈。再由下一個人從1開始報數,數到3的人出圈,如此迴圈數下去,直到最後一個人出圈。(題意都差不多

約瑟夫環(使用C語言單向迴圈連結串列來解決)

題目描述 編號為1,2,…,n的n個人按順時針方向圍坐在一張圓桌周圍,每人持有一個密碼(正整數)。一 開始任選一個正整數m作為報數上限值,從第一個人開始按順時針方向自1開始報數,報到m時停止報數,報m的那 個人出列,將他的密碼作為新的m值,從他順時針方向的下一個人開始重新從1報數,

資料結構之鏈式表的實現--單向迴圈連結串列(C語言)

 學習參考: 嚴蔚敏: 《資料結構-C語言版》 單向迴圈連結串列的基本操作 單向迴圈連結串列的建立 單向迴圈連結串列新增結點(頭插法) 單向迴圈連結串列新增結點(尾插法) 單向迴圈連結串列

資料結構學習筆記——C++實現雙向迴圈連結串列模板類(超詳解)

定義了兩個標頭檔案分別放置結點類模板(Node.h)和雙鏈表模板(DoubleLinkList.h), 然後在原始檔的main函式中測試。 Node.h #pragma once # include <iostream> template <class

c語言實現雙向迴圈連結串列

此次工程還是使用了3個原始檔list.h(標頭檔案原始碼),main.c(實現介面的具體程式碼),list.c(單鏈表邏輯) list.h #pragma once #include<stdio.h> #include<stdlib.h> #include

牛客網 劍指offer_程式設計題—— 從尾到頭列印連結串列C++)

輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。 C++ /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : *

【資料結構】迴圈佇列的應用(一)列印三角

列印楊輝三角 楊輝三角是比較常見的佇列的應用,下面一行的數是上面2個數字的和,數列首位都是1,高中數學裡牛頓二項式展開式應該有說。 程式碼收穫 這題主要是找規律。利用下面一行比上面一行數字多一個,佇列頭為上一行,除了入隊首尾的1之外,入隊的上一行2個數的和