1. 程式人生 > >C語言連結串列就地逆置操作

C語言連結串列就地逆置操作

在c語言中,為了節省空間和時間,我們可以採取在原空間上實現連結串列的逆置

每次讀取一個節點時,將他用頭插法的方法加入到連結串列中,最後得到的即是逆置後的連結串列了

關鍵掌握頭插法的思路:

q->next=l->next;

l->next=q;

下面是具體方法實現以及說明:

void  PrintLinklist_back(linklist l)   
{
  linklist pre = l->next;   //用來遍歷的節點
  linklist  q;     //定義一個空閒節點
  l->next = NULL;     //頭節點指向空
  //就地逆置
  while (pre!=NULL)   //遍歷
  {
    q = pre;
    pre = pre->next;
    q->next = l->next;
    l->next = q;
  }
}

相關推薦

C語言連結串列就地操作

在c語言中,為了節省空間和時間,我們可以採取在原空間上實現連結串列的逆置 每次讀取一個節點時,將他用頭插法的方法加入到連結串列中,最後得到的即是逆置後的連結串列了 關鍵掌握頭插法的思路: q->next=l->next; l->next=q; 下面

C語言實現連結串列

//演算法關鍵:將頭節點後的節點移到頭結點之前,並使最前面的節點為頭結點 #include<stdio.h> #include<malloc.h> #define LEN sizeof(struct LNode) struct LNode {   

C語言連結串列:遍歷,頭插,尾插,中間插入;頭節點刪除,尾節點刪除,中間刪除的操作

/****************************************************************************************************************************************

連結串列C版)

#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR -1 #define MAX_SIZE 100 t

C語言連結串列的5種常見操作

C語言連結串列的5種常見操作 單鏈表反轉 連結串列中環的檢測 兩個有序的連結串列合併 刪除連結串列倒數第n個結點 求連結串列的中間結點 Ref typedef struct list{ int i

C語言連結串列實現佇列操作

還是操作佇列,但是這次換成連結串列,但是要注意出隊的操作。 一般的思維是在出隊的時候,刪除頭結點的下一個節點,這樣的話確實可以將佇列中的節點全部刪除,但是如果我們將最後一個節點刪除的時候,我們的演算法就將tail指標賦值為NULL,這時如果再進行入隊操作的時候,就會發生段錯

c語言——連結串列的基本操作

#include <stdio.h>typedef int ElementType;typedef struct ListNode{int k;ElementType element;struct ListNode *m_pNext;}ListNode,*PNOD

C語言 連結串列的基本操作實現 原始碼

1 創作初衷   作為一個畢業半年,到公司上班的菜鳥程式猿,卻還沒有參與過一次實際的專案開發,沒有跟著專案寫過一行程式碼, 每天除了自學,就是做做文件之類的工作。所以在此,把之前學過的知識重新拿起來,寫成文章。   本文屬於作者 原創,轉載請註明出處!哦,也許並沒有人能看上

C語言連結串列各類操作詳解

          連結串列概述    連結串列是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。它可以根據需要開闢記憶體單元。連結串列有一個“頭指標”變數,以head表示,它存放一個地址。該地址指向一個元素。連結串列中每一個元素稱為“結點”,每個結點都

C++ 單鏈表的 就地 ,以及基本操作

#include "stdafx.h" #define sub(a,b) a-b //沒用 #include <iostream> using namespace std; struct node { int a; node * next; }; int

演算法設計與分析01-連結串列

一.最常用的方法: LNode*  ReverseList(LNode* head) {     if (head == NULL)         return NULL;  &nbs

C語言連結串列(超詳細)

前言:之前學習連結串列的時候總會遇到一些問題 也看了好多人的文章感覺有些不是太實用 然後後來也是自己摸索才大概寫出來的. 在真正的開發中會把連結串列的增刪改查寫到函式裡 但是刪除有點麻煩 找了很多都是刪除第幾個 而不是刪除某個值對應的節點 讓我很難受 所以想寫一些連結串列的操作分享

使用C語言連結串列實現商品管理系統

#include <stdio.h> #include <stdlib.h> #include <windows.h> #define bool char #define true 1 #define false 0 #define NUM 1

5 種排序演算法--C語言連結串列

原始碼地址 GitHub:https://github.com/GYT0313/C-DataStructure/blob/master/sortIn5.c 包括: 氣泡排序 快速排序 選擇排序 插入排序 希爾排序 執行: 注意:

1870 Problem B C語言-連結串列排序

問題 B: C語言-連結串列排序 時間限制: 1 Sec  記憶體限制: 128 MB 提交: 86  解決: 71 [提交][狀態][討論版][命題人:外部匯入] 題目描述 已有a、b兩個連結串列,每個連結

C語言連結串列的建立插入等綜合實戰

系本人原創,轉載請註明出處: 程式設計老師讓寫一個連結串列的綜合運用,包括建立,檢視某個節點,刪除某個節點,插入某個節點,以及連結串列的逆序,還必須要有出錯提示和返回。QaQ,,,看見這麼多東西我就想嚶嚶嚶, 先放上鍊表的結構體: typedef struct stud

C語言連結串列節點插入與刪除

線性表操作 順序表是我們資料結構中的基本儲存形式,現在給定一個順序表,有如下操作: Insert X Y:在順序表中X位置插入Y元素,遍歷輸出當前順序表的所有元素。 Delete X:刪除順序表中的X元素,如果有多個X元素,只刪除第一個X,遍歷輸出當前順序的所有

一步一步教你從零開始寫C語言連結串列---構建一個連結串列

為什麼要學習連結串列? 連結串列主要有以下幾大特性: 1、解決陣列無法儲存多種資料型別的問題。 2、解決陣列中,元素個數無法改變的限制(C99的變長陣列,C++也有變長陣列可以實現)。 3、陣列移動元素的過程中,要對元素進行大範圍的移動,很耗時間,效率也不高。

資料結構實驗之連結串列三:連結串列(SDUT 2118)

題目連結 #include <bits/stdc++.h> using namespace std; struct node { int data; struct no

從零開始的c語言連結串列學習 001--建立一個最簡單基礎的連結串列

因為各種原因,儘管c語言期末考也拿了八十多分,卻仍然對連結串列處在完全甍逼的狀態,以至於之後的資料結構課聽天書,實驗課做不出來,於是決定重學一波連結串列的知識,特此記錄筆記 001—建立一個簡單的連結串列 1.1 認識連結串列 所謂連結串列,一言蔽之就是一連串帶