p62 練習3.3 通過只調整指標(而不是資料)來交換兩個相鄰的元素,使用:
由於兩種資料結構的結點結構體都較為簡單,這裡就不列出了
a.單鏈表
List creatList1(List T,int n) //建立單鏈表 (頭插法)
{
int x;Position S;
T = new struct Node;
T->Next = NULL;
for(int i = 0;i < n;i++)
{
S = new struct Node;
cin>>x;
S->Data = x;
S->Next = T->Next;
T->Next = S;
}
return T;
}
交換相鄰結點演算法:
void SwapAdjNode1(List T,Position P1,Position P2)
{
if(P1->Next!=P2)
{
cout<<"不是相鄰結點";
return;
}
else
{
PtrToNode P0;
P0 = FindPrevious(P1->Data,T);
P1 = P2->Next;
P2->Next = P1;
P0->Next = P2;
return;
}
}
b:雙鏈表
List creatList2(List T,int n) //建立雙向連結串列
{
Position rear = T; //尾插法需要定義一個尾指標
Position S;
T = new struct Node;
T->Next= NULL;
T->prior = NULL;
for(int i = 0;i < n;i++)
{
S = new struct Node; //尾插法
cin>>S->Data;
rear->Next = S;
head->prior = S;
S->prior = rear;
S->Next = head;
rear = S;
}
return T;
}
交換相鄰結點演算法:
void SwapAdjNode2(List T,Position p1,Position p2){
Position P0 = FindPrevious(p1->Data,List T);
Position P3 = p2->Next;
if(P1->Next!=P2)
{
cout<<"不是相鄰結點";
return;
}
else
{
P0->Next = p2;
p1->Next = p3;
p1->prior = p2;
p2->Next = p1;
p2->prior = p0;
p3->prior = p1;
} }
這裡列出FindPreviou演算法實現:
Position FindPrevious(DataType x,List T) //尋找前置結點;
{
PtrToNode p;
p = T;
while(p->Next!=NULL&&p->Next->Data!=x)
{
p = p->Next;
}
if(p->Next == NULL)
{
return NULL;
}
else return p;
}
相關推薦
p62 練習3.3 通過只調整指標(而不是資料)來交換兩個相鄰的元素,使用:
由於兩種資料結構的結點結構體都較為簡單,這裡就不列出了 a.單鏈表 List creatList1(List T,int n) //建立單鏈表 (頭插法) { int x;Position S; T = new struct Node; T->Next = NULL;
老男孩教育每日一題-第84天-兩個文件,把第一個文件中的第2、3行內容添加到第二個文件的第3行後面
每日一題兩個文件如下:[[email protected]/* */ ~]# cat 1.txt 111 222 333 [[email protected]/* */ ~]# cat 2.txt AAA bbb ccc ddd要求修改後的文件[[email protect
3.IOC的配置與應用(annotation的方式)
prot epo println 字母 set return 方法 public 重要 自動裝載 [email protected]/* */ 1 public class UserService { 2 3 priv
jumpserver-0.3.2 堡壘機環境搭建(圖文詳解)
其他 install yum mage -128 req isa 解決 qq密碼 下載安裝包:https://github.com/jumpserver/jumpserver.git 解壓 三、執行快速安裝腳本 cd /opt/jumpserver/install pip
不借助第三個變量,交換兩個變量值的3種方式
int nat AS pri sdn 我們 感謝 方法 span 今天在我們學校的OJ上做題,一道非常簡單的題,突然想試試能不能不借助第三個變量,交換兩個變量值。蒙出來一半了已經,好可惜。現在把方法寫在這裏,希望以後不要忘記。 1 void fun1() 2 {
【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-6 迪米特原則(最少知道原則)
/** * 軟體設計七大原則-迪米特原則 學習筆記 * @author cnRicky * @date 2018.11.10 */ 迪米特原則(最少知道原則) 一個物件應該對其他物件保持最少的瞭解。又叫最少知道原則 迪米特原則主要強調:儘量降低類與類之間的耦合 優點:降低類與類之
一行python程式碼寫九九乘法表,1,2,3…到100的和,交換兩個變數的值
用一行程式碼輸出九九乘法表: 第一種方法: print('\n'.join([' '.join(["%d*%d=%d"%(i,j,i*j) for i in range(1,j+1)])for j in range(1,10)])) 第二種方法: print('\n'.join
交換兩個陣列的內容+求1/1-1/2+1/3...-1/100的值+1-100整數中出現9的次數
交換兩個陣列的內容: 交換兩個容量相同的整形陣列的內容: #include<stdio.h> /* 交換兩個整形陣列的內容 */ void print(int x[]) { for (int i = 0; i < 3;i++) { printf("%d "
3種方法交換兩個整數(不建立臨時變數)+輸出一組資料最大值+簡單排序+最大公約數
交換兩個整數: 第一種: int a = 6; int b = 8; int t = 0; t = a; a = b; b = t; printf("a = %d b = %d\n", a, b); 後兩種不建立臨時變數 第二種: int a = 6; int
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應 import java
團隊任務3--6號團隊-每日例會-(2018-12-4)
團隊任務3--6號團隊--2018-11-30 1,我們團隊為6號團隊, 開發的軟體為飛機大戰, 團隊成員為8人。 專案經理:田志吉 產品經理:孫楊 UI設計師:牛瑞 軟體測試
團隊任務3--6號團隊-每日例會-(2018-12-6)
團隊任務3--6號團隊--2018-12-6 1,我們團隊為6號團隊, 開發的軟體為飛機大戰, 團隊成員為8人。 專案經理:田志吉 產品經理:孫楊 UI設計師:牛瑞 軟體測試工
團隊任務3--6號團隊-每日例會-(2018-12-7)
團隊任務3--6號團隊--2018-12-7 1,我們團隊為6號團隊, 開發的軟體為飛機大戰, 團隊成員為8人。 專案經理:田志吉 產品經理:孫楊 UI設計師:牛瑞 軟體測試工
演算法導論_原書第3版---附帶課後部分答案(已經加書籤)pdf下載
內容簡介 在有關演算法的書中,有一些敘述非常嚴謹,但不夠全面;另一些涉及了大量的題材,但又缺乏嚴謹性。本書將嚴謹性和全面性融為一體,深入討論各類演算法,並著力使這些演算法的設計和分析能為各個層次的讀者接
3 Spring框架整合WEB 1(與struts2整合)
使用spring與struts2整合 web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-in
C語言例子(3)之求兩個正整數的最大公約數及最小公倍數
# include <stdio.h> void main() { int x, y, num1, num2, temp; printf("請輸入兩個正整數:\n"); scanf("%d %d", &num1, &num2); if(num1 <
第12周專案3漢諾塔--移動步驟(遞迴函式)
問題及程式碼: /* *Copyright (c)2014,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:hannuota.cpp *作 者:單昕昕 *完成日期:2014年11月13日 *版 本 號:v1.0 *
.建立一個視窗程式(JFrame),標題欄起名為“瀏覽器”,有一個選單條,有“檔案”、“編輯”、“檢視”3個選單。“檔案”選單有兩個選單項,一項是“開啟”,一項是“儲存”,“開啟”項做成子選單,有兩個
import javax.swing.*; public class Example { public static void main(String[] args) { Window win=
【c++程式】通過指標來交換兩個數的值
/* *檔名稱:pointer.cpp *作 者:Zhao Tilu *完成日期:2014年10月14日 *問題描述:通過指標來交換兩個數的值 */ #include<iostream> using namespace std; void s
3.5 編寫一個程式,從標準輸入讀入某職員的工作時間(以小時計)和每小時的工資 數,計算並輸出他的工資。若職員月工作時間超過 40 小時,則超過部分按原工資的 1.5 倍 來計算。
/* 3.5 編寫一個程式,從標準輸入讀入某職員的工作時間(以小時計)和每小時的工資 數,計算並輸出他的工資。若職員月工作時間超過 40 小時,則超過部分按原工資的 1.5 倍 來計算。 */ #include <iostream> using namespac