1. 程式人生 > >線性表(順序表)C語言程式碼實現-處理整型資料(附詳細解釋)。 _清風明月

線性表(順序表)C語言程式碼實現-處理整型資料(附詳細解釋)。 _清風明月

#include <stdio.h>

#include <conio.h>//conio是Console Input / Output(控制檯輸入輸出)的簡寫,其中定義了通過控制檯進行資料輸入和資料輸出的函式,

//主要是一些使用者通過按鍵盤產生的對應操作,比如getch()函式等等。

#define MAX 30    //定義線性表的最大長度
enum BOOL{False,True};  //定義BOOL型
typedef struct{
   int elem[MAX];       //int陣列型別的線性表
   int length;             //length指示當前線性表的長度
}sqlist;//sqlist是struct的別名。


void initial(sqlist &);    //初始化線性表1.
BOOL insert(sqlist &v,int loc,int intt);//線上性表中插入元素 (引用線性表,位置,int型變數)2.
BOOL del(sqlist &,int weizhi,int &);   //線上性表中刪除元素 (引用線性表,位置,返回該位置被刪除元素的元素值)3.
//1.2.3.都需要對線性表進行操作,所以是對線性表的引用。&。


int locate(sqlist,int elem);        //線上性表中定位元素(線性表,需要被查詢的元素)
void print(sqlist);             //顯示線性表中所有元素(打印出線性表中所有元素)


void main()//(主函式)
{
sqlist S;      //S為一線性表(建立一個名叫S的順序表結構體物件。)
int loc,flag=1;//定義整型位置變數,和標記變數(標記變數的作用之後用於進入while迴圈)
char j; //用於之後swich來選擇條件的一個字元。
int intt; //(要插入的int型變數元素)
BOOL temp; //(temp用來記錄插入,刪除函式是否成功插入的返回值)
printf("本程式用來實現順序結構的線性表。\n");
printf("可以實現查詢、插入、刪除等操作。\n");

initial(S);         //初始化線性表(呼叫之後的函式進行初始化。)


while(flag)
{
printf("請選擇:\n");
printf("1.顯示所有元素\n");
printf("2.插入一個元素\n");
printf("3.刪除一個元素\n");
printf("4.查詢一個元素\n");
printf("5.退出程式    \n");

scanf(" %c",&j);
switch (j)
{
case '1':print(S); break; //顯示所有元素
case '2':
{
printf("請輸入要插入的元素(一個字元)和插入位置:\n");
printf("格式:字元,位置;例如:a,2\n");


scanf(" %d,%d", &intt, &loc);  //輸入要插入的元素和插入的位置


temp = insert(S, loc, intt);     //插入


if (temp == False)
printf("插入失敗!\n");  //插入失敗
else
{
printf("插入成功!\n");
print(S);
} //插入成功
break;
}
case '3':{printf("請輸入要刪除元素的位置:");
scanf("%d", &loc);    //輸入要刪除的元素的位置


temp = del(S, loc, intt);  //刪除(引用線性表,位置,返回該位置被刪除元素的元素值)


if (temp == True)
printf("刪除了一個元素:%d\n", intt); //刪除成功
else 
printf("該元素不存在!\n");  //刪除失敗
print(S);
break;
case '4':{
printf("請輸入要查詢的元素:");
scanf(" %d", &intt);      //輸入要查詢的元素


loc = locate(S, intt);      //定位


if (loc != -1) 
printf("該元素所在位置:%d\n", loc + 1); //顯示該元素位置
else   
printf("%d 不存在!\n", intt);//當前元素不存在
break;
}
case '5':{
flag = 0;
printf("程式結束,按任意鍵退出!\n"); }
}
}
getch();
}
}


void initial(sqlist &v)
{
//初始化線性表
int i;
printf("請輸入初始線性表長度:n="); //輸入線性表初始化時的長度
scanf("%d",&v.length);
printf("請輸入從1到%d的各元素(整型),例如:1 2 3 4\n",v.length);
getchar();
for(i=0;i<v.length;i++) 
scanf("%d",&v.elem[i]); //輸入線性表的各元素
}


BOOL insert(sqlist &v,int loc,int intt)        
{
//插入一個元素,成功返回True,失敗返回False
int i;
if((loc<1)||(loc>v.length+1))
{
printf("插入位置不合理!\n");  //位置不合理
return False;
}
else if(v.length>=MAX)         //線性表已滿
{
printf("線性表已滿!\n");
return False;
}
else 
{
for(i=v.length-1;i>=loc-1;i--) 
v.elem[i+1]=v.elem[i];//其後元素依次後移
v.elem[loc-1]=intt;     //插入元素
v.length++;                      //線性表長度加一
return True;
    }
}


BOOL del(sqlist &v,int loc,int &intt)           
{
//刪除一個元素,成功返回True,並用ch返回該元素值,失敗返回False
int j;
if(loc<1||loc>v.length)    //刪除位置不合理
return False;
else {
intt=v.elem[loc-1];  //ch取得該元素值
for(j=loc-1;j<v.length-1;j++)
v.elem[j]=v.elem[j+1];   //其後元素依次前移
v.length--;       //線性表長度減一
return True;
}
}


int locate(sqlist v,int intt)
{
//線上性表中查詢int元素的位置,成功返回其位置,失敗返回-1
int i=0;
while(i<v.length && v.elem[i]!=intt)
++i;  //當前位置後移,直到找到為止
if(v.elem[i]==intt)               //找到當前元素
return i;
else  return(-1);
}


void print(sqlist v)          //顯示當前線性表所有元素
{
int i;
for(i=0;i<v.length;i++)
printf("%d ",v.elem[i]);
printf("\n");
}

相關推薦

線性順序C語言程式碼實現-處理資料(詳細解釋) _清風明月

#include <stdio.h>#include <conio.h>//conio是Console Input / Output(控制檯輸入輸出)的簡寫,其中定義了通過控制檯進行資料輸入和資料輸出的函式, //主要是一些使用者通過按鍵盤產生的對應

哈夫曼樹詳細講解帶例題和C語言程式碼實現——全註釋

** 哈夫曼樹詳細講解(帶例題和C語言程式碼實現——全註釋) ** 定義 哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的 路徑長度(若根結點為0層,葉結點到根結點的路徑長度為葉結點

C語言的三種資料型別:int、short int和long int

int資料型別的位數為16位,short int資料型別的位數也是16位。而long int的位數為32位,可用來儲存比較大的整數。  short int 和 long int可以縮寫為short 和 long。               C語言中的整型資料型別int、

2.線性的鏈式儲存結構————單鏈思路分析,C語言C++完整程式

目錄 1.單鏈表的基本概念 (1)單鏈表:當連結串列中的每個結點只含有一個指標域時,稱為單鏈表。 (2)頭指標:如上圖所示,連結串列中第一個結點的儲存位置叫做頭指標。 (3)頭結點:頭結點是放在第一個元素結點之前的結點,頭結點不是連結串列中的必

線性順序和鏈式

#include<iostream> #include<cstdio> #define LIST_INIT_SIZE 100 //初始數量 #define LISTINCREMENT 10 //增加量 #define LA_INITLEN 3

Java線性順序儲存——陣列實現

第一次寫部落格,最近一直在研究資料結構,最開始準備用c語言寫資料資料結構的東西的,發現用c真的寫得我頭痛,果斷用了我喜歡的java實現,其實懂了過後用什麼語言寫都一樣的。不說了,直接上程式碼! 1.定義介面 抽象資料型別的List介面 public interface

資料結構——線性 順序、單鏈、靜態連結串列、迴圈連結串列、雙向連結串列

提示:以下內容不適合零基礎人員,僅供筆者複習之用。 一、線性結構的基本特徵: 1.集合中必存在唯一的一個“第一元素”; 2.集合中必存在唯一的一個 “最後元素”; 3.除最後元素在外,均有 唯一的後繼; 4.除第一元素之外,均有 唯一的前驅。 如:j

線性順序的查詢、新增、和刪除

/************************************************************************ * * 檔名:2.1.1.cpp * * 檔案描述:使用線性表的順序表來實現初始化、查詢、插入、刪除 * * 建立人: fdk

資料結構之線性順序,單鏈,迴圈連結串列,雙向連結串列-- 圖書管理系統

順序表 #include <iostream> #include <cstring> #include <cstdlib>///exit()標頭檔案exit(0):正常執行程式並退出程式。exit(1):非正常執行導致退出程式 #incl

順序的基本操作及C語言完整實現

對順序表進行操作,大致可分為以下幾類: 表的建立; 表中新增(新增)資料元素; 表中刪除資料元素; 表中查詢指定資料元素; 表中更改某資料元素; 以上操作各自的原理及實現如下所示。 順序表的建立 順序表的建立,也就是順序表進行初始化,在預先申請記憶體空間的同時,給變數 size 和 len

C++語言學習十二——C++語言常見函數調用約定

調用函數 操作 開發 混合 類成員 修飾 fast 順序 處理 C++語言學習(十二)——C++語言常見函數調用約定 一、C++語言函數調用約定簡介 C /C++開發中,程序編譯沒有問題,但鏈接的時候報告函數不存在,或程序編譯和鏈接都沒有錯誤,但只要調用庫中的函數就會出現堆

1003 Emergency25 分C語言版本提問求解答

paths sub amount ble max lis sam ams marked 1003 Emergency(25 分) As an emergency rescue team leader of a city, you are given a special ma

23種設計模式 之 State模式狀態模式 C語言

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PAT 1084 外觀數列 20 分C語言

1084 外觀數列 (20 分) 解題思路: 設定兩個陣列,分別存放相鄰兩個序列,其中s1存放前一個,s2存放後一個,首先可確定的是兩個陣列的第一個元素,即s1[0] = s2[0] = d。 從s1得到s2:如果s1[i] == s1[i-1]的話,那計數cnt

1089 狼人殺-簡單版 20 分 C語言

1089 狼人殺-簡單版 (20 分) #include<stdio.h> int main() { int n; scanf("%d", &n); int wj[n]; int w1=0,w2=0; //全域性變數在沒有賦值以前系

PTA 1012 數字分類20 分C語言

PTA 1012 數字分類(20 分)C語言 #include<stdio.h> #include<math.h> int main() { int n; scanf("%d", &n); int zs[n]; //n個整數

PTA 1013 數素數20 分 C語言

PTA 1013 數素數(20 分) C語言 #include<stdio.h> #include<math.h> //判斷素數 int isprime(int x) { int flag = 1; for(int i=2;i<=sqrt(x

PAT 1010 一元多項式求導25 分 C語言

PAT 1010 一元多項式求導(25 分) #include<stdio.h> int main() { int a, b; int flag=0; //設定flag指示是否已經經過一次求導運算,考慮輸出的空格問題 while(scanf("%

PAT 1009 說反話20 分 C語言

PAT 1009 說反話(20 分) #include<stdio.h> #include<string.h> void output(char *string) { char* tail = strchr(string, ' '); //獲取第一個空

PAT:1005 繼續(3n+1)猜想25 分C語言

PAT 1005 繼續(3n+1)猜想(25 分) C語言 #include<stdio.h> int main() { int n; scanf("%d", &n); //輸入n個整數 int zs[n]; for(in