1. 程式人生 > >順序表的建立和翻轉 C語言實現

順序表的建立和翻轉 C語言實現

 要把一個順序表就地逆置(輔助空間為o(1)),可以將表中的開始結點與終端結點互換,第二個結點和倒數第二個結點互換,如此反覆,就可以將整個表逆置了。

#include<stdio.h>
#define ListSize 20
typedef int DataType;
typedef struct{
	DataType data[ListSize];
	int length;
}Seqlist;

Seqlist CreateList(Seqlist L)  //結構體變數作為函式的引數,修改之後的成員值不能返回到主調函式,不過可以return返回它
{
    int n;
    L.length=0;
    printf("輸入順序表的資料:輸入-1結束\n");
	while(1)
    {
        scanf("%d",&n);
        if(n==-1) break;
        L.data[L.length]=n;
        L.length++;
    }
    return L;
}

void ReverseList(Seqlist *L)  //結構體指標變數作為函式的引數,修改後的結構體成員的值能返回到主調函式,相當於傳地址進來直接修改
{
	DataType temp;
	int i;
	for(i=0;i<(L->length)/2;i++)
	{
		temp=L->data[i];
		L->data[i]=L->data[L->length-1-i];
		L->data[L->length-1-i]=temp;
	}
}

int main()
{
    int i,n;
    Seqlist mylist;
    mylist=CreateList(mylist);
    ReverseList(&mylist);
	for(i=0;i<mylist.length;i++)
	{
		printf("%d,",mylist.data[i]);
	}
	printf("\n");
	printf("長度:%d,",mylist.length);
}

相關推薦

順序建立翻轉 C語言實現

 要把一個順序表就地逆置(輔助空間為o(1)),可以將表中的開始結點與終端結點互換,第二個結點和倒數第二個結點互換,如此反覆,就可以將整個表逆置了。 #include<stdio.h> #define ListSize 20 typedef int DataTy

動態順序的相關功能——C語言實現

1.結構體的建立typedef struct SeqListD { DataType* _array; size_t _capacity; // 底層空間的大小 size_t _size; // 有效元素的個數 }SeqListD, *PSeqListD;2.動態順

單鏈順序儲存相關操作的c語言實現

以前學資料結構時,對於單鏈表的順序儲存的原理都懂,但是從沒有好好地程式設計實現一下,現在呢,重溫資料結構,然後實現了一下.下面是原始碼.實現了初始化,建立,查詢,刪除,定位還有兩個連結串列的合併.#i

資料結構(一):順序的基本操作 C語言

順序表   標頭檔案: Sqlist.h #include<stdio.h> #include<stdlib.h> #define SIZE 15 #pragma once typedef struct Sqlist { int elem[SIZ

順序建立就地逆置(函式)

本題要求實現順序表的建立和就地逆置操作函式。L是一個順序表,函式ListCreate_Sq(SqList &L)用於建立一個順序表,函式ListReverse_Sq(SqList &L)

單鏈不帶頭標準c語言實現

連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的指標

6-72 順序建立就地逆置 (10 分)

6-72 順序表建立和就地逆置 (10 分) 本題要求實現順序表的建立和就地逆置操作函式。L是一個順序表,函式ListCreate_Sq(SqList &L)用於建立一個順序表,函式ListReverse_Sq(SqList &L)是在不引入輔助陣列的前提

順序建立就地逆置 (10 分)

本題要求實現順序表的建立和就地逆置操作函式。L是一個順序表,函式ListCreate_Sq(SqList &L)用於建立一個順序表,函式ListReverse_Sq(SqList &L)是在不引入輔助陣列的前提下將順序表中的元素進行逆置,如原順序表元素依次為1,2,3,4,則逆置

單鏈的基本操作c語言實現

#include<stdio.h> #define false 0 #define ok 1 //定義節點的結構 typedef struct node{ int data; struct node *next; }node; ty

佇列 C語言實現

1、棧的概念 棧又稱堆疊,它是一種運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除運算。 2、棧的順序儲存結構和操作實現 棧的順序儲存結構示意圖: 下面通過一個例項展示棧的順序儲存結構的操作實現,其中包含了6種操作: #include<stdio.h>

單鏈基本操作的C語言實現(鏈式儲存結構)

#include<stdio.h> #include<stdlib.h> typedef int DataType; typedef struct Node{ DataType data; struct Node *next; }

兩個單鏈的合併(C語言實現

單鏈表的合併還是挺簡單的,直接上程式碼吧。 #include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef struct Node *PtrToNode

雜湊(散列表)—Hash解決地址衝突 C語言實現

#include "StdAfx.h" #include "StringHash.h" StringHash::StringHash(const long nTableLength /*= MAXTABLELEN*/) { InitCryptTable(); m_tablelength

《資料結構與演算法》-單鏈基本操作的C語言實現

最近在學演算法內容,發現很多演算法依賴於基本的資料結構,所以從新溫習資料結構,記錄一下,以後知識點忘記可以提醒自己哪裡比較容易出錯。 所用教材《資料結構與演算法分析》by Mark Allen Weiss 《資料結構》(C語言

資料結構—順序基本操作(c語言程式碼)

順序表計算機內部儲存一張線性表是用一組連續地址記憶體單元,這種儲存結構即為順序儲存結構,這種結構下的線性表叫順序表。順序表有兩種定義方法:                                    1.靜態定義                           

順序建立初始化過程詳解(C語言實現

順序表存放資料的特點和陣列這種資料型別完全吻合,因此順序表的實現使用的是陣列。需要注意的是,使用陣列實現順序表時,一定要預先申請足夠大的記憶體空間,避免因儲存空間不足,造成資料溢位,導致不必要的程式錯誤甚至崩潰。 在建立順序表時,除了預先申請記憶體空間,還需要實時記錄順序表的長度和順序表本身申請的記憶體大

連結串列順序(參考stl原始碼,使用c語言實現

順序表 優點:可以隨機訪問,cpu快取記憶體利用率高,不涉及(較少)進行插入和刪除操作,應該使用順序表。 順序表,不論是動態開闢,還是固定大小,一般放置在棧上,不用程式設計師手動開闢空間 連結串列:主要運用2種,A單向不帶頭結點的非迴圈連結串列      B雙向帶頭

C語言實現順序的增刪查改逆置

在資料結構中,我們最開始接觸的就是順序表,那麼順序表是什麼呢?順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組地址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組地

順序建立 ,賦值,刪除,插入--- C語言實現

順序表的基本概念自行百度解決,這裡主要記錄的是順序表用C實現的原始碼#include <stdio.h>#include <stdlib.h>#define maxsize 10typedef struct{int data[maxsize];int

(續)順序之單循環鏈(C語言實現)

include 作者 指針 順序 gb2 mark oos case 循環 單循環鏈表和單鏈表的唯一差別在於單循環鏈表的最後一個節點的指針域指向第一個節點, 使得整個鏈表形成一個環. C實現代碼例如以下: #include<stdio.h>