线性表之顺序存储-顺序表
生活随笔
收集整理的這篇文章主要介紹了
线性表之顺序存储-顺序表
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
順序表的操作
- [x] 向有序順序表插入一個(gè)元素
- [x] 順序表的冒泡排序
- [x] 順序表的刪除操作
- [x] 順序表中元素的查找
- [x] 順序表的逆置
- [x] 刪除順序表中的相同元素
- [x] 向順序表的指定位置插入元素
- [x] 打印順序表
順序表的存儲(chǔ)結(jié)構(gòu)
#define maxsize 100 //存儲(chǔ)空間的分配量 //定義順序表數(shù)據(jù)類(lèi)型 typedef struct{int data[maxsize];int last; //存放表中最后一個(gè)元素的下標(biāo) }sequenlist;順序表的冒泡排序
void list_bubble_sort(sequenlist *p)//max to min {int i,j;int temp;for(i=0; i< p->last; i++)//attention{for(j=0; j< p->last-i; j++){if(p->data[j] < p->data[j+1]){temp = p->data[j];p->data[j] = p->data[j+1];p->data[j+1] = temp; }}} }順序表的刪除操作
nt delete_1(sequenlist *s,int del) //刪除函數(shù) {int temp;for(int i=0; i <= s->last; i++){if(del == s->data[i]){temp = i;for(int j=i; j<s->last; j++){s->data[j] = s->data[j+1];}s->last = s->last - 1;return 0;//刪除第一個(gè)與del相同的元素,函數(shù)結(jié)束 }}//要?jiǎng)h的那個(gè)元素不在表中 printf("the element you want to delete is not in the sequenlist!\n"); }順序表中元素的查找
int search(sequenlist *s,int key) //查找函數(shù) {for(int i=0; i<= s->last; i++){if(key == s->data[i]){printf("exist !\n");return 0;}}printf("not found !\n");return 0; }順序表的逆置
void reverse(sequenlist *s)//逆置函數(shù) {int i,j;int temp;int last_temp = s->last;for(i=0; i<= s->last/2; i++){temp = s->data[i];s->data[i] = s->data[last_temp];s->data[last_temp] = temp; last_temp--;} }刪除順序表中的相同元素
void delete_same(sequenlist *s)//刪除表中相同的元素 {int i,j;int temp;for(i=0; i<=s->last; i++){ for(j=1; j<=s->last; j++){if(s->data[j] == s->data[i])//元素相同 {for(int k=j; k<s->last; k++){s->data[k] = s->data[k+1];}s->last = s->last - 1; }} } }向順序表的指定位置插入元素
int insert(sequenlist *L,int i,int x) //指定位置,插入 {int j;if(((*L).last) >= maxsize-1){printf("the list is overflow!\n");return (0);}else{if((i<1)||(i>(*L).last+2)){printf("position is not correct!\n");return (0);}else{for(j=(*L).last;j>=i-1;j--){(*L).data[j+1]=(*L).data[j]; }(*L).last=(*L).last+1; (*L).data[i-1]=x;return (0);}} }向順序表的指定位置插入元素
int insert(sequenlist *L,int i,int x) //指定位置,插入 {int j;if(((*L).last) >= maxsize-1){printf("the list is overflow!\n");return (0);}else{if((i<1)||(i>(*L).last+2)){printf("position is not correct!\n");return (0);}else{for(j=(*L).last;j>=i-1;j--){(*L).data[j+1]=(*L).data[j]; }(*L).last=(*L).last+1; (*L).data[i-1]=x;return (0);}} }打印順序表
void print_list(sequenlist *s) //打印順序表 {int i;for(i=0; i<=s->last; i++){printf("%3d",s->data[i]);} }試著煲下湯
/* * author: shansan.top * date: 2018/12/12 * version: 1.0 */#include<stdio.h> #define maxsize 100//定義順序表數(shù)據(jù)類(lèi)型 typedef struct{int data[maxsize];int last; }sequenlist;int search(sequenlist *s,int key) //查找函數(shù) {for(int i=0; i<= s->last; i++){if(key == s->data[i]){printf("exist !\n");return 0;}}printf("not found !\n");return 0; }int delete_1(sequenlist *s,int del) //刪除函數(shù) {int temp;for(int i=0; i <= s->last; i++){if(del == s->data[i]){temp = i;for(int j=i; j<s->last; j++){s->data[j] = s->data[j+1];}s->last = s->last - 1;return 0;//刪除第一個(gè)與del相同的元素,函數(shù)結(jié)束 }}//要?jiǎng)h的那個(gè)元素不在表中 printf("the element you want to delete is not in the sequenlist!\n"); }void print_list(sequenlist *s) //打印順序表 {int i;for(i=0; i<=s->last; i++){printf("%3d",s->data[i]);} }void reverse(sequenlist *s)//逆置函數(shù) {int i,j;int temp;int last_temp = s->last;for(i=0; i<= s->last/2; i++){temp = s->data[i];s->data[i] = s->data[last_temp];s->data[last_temp] = temp; last_temp--;} }void list_bubble_sort(sequenlist *p)//max to min {int i,j;int temp;for(i=0; i< p->last; i++)//attention{for(j=0; j< p->last-i; j++){if(p->data[j] < p->data[j+1]){temp = p->data[j];p->data[j] = p->data[j+1];p->data[j+1] = temp; }}} }void insert_in_order_list(sequenlist *s,int value)//有序表中插入元素 {int i,j;int count=0;//int temp = s->last+1;for(i=0; i<=s->last; i++){count++;if( value <= s->data[i]){s->last = s->last + 1;for(j=s->last; j>i; j--){s->data[j] = s->data[j-1];}s->data[i] = value;return ;//結(jié)束函數(shù) }}//printf("i=%d",i);//printf("s->last=%d\n",s->last);if(i > s->last-1){s->last = s->last + 1;s->data[s->last] = value;} }int insert(sequenlist *L,int i,int x) //指定位置,插入 {int j;if(((*L).last) >= maxsize-1){printf("the list is overflow!\n");return (0);}else{if((i<1)||(i>(*L).last+2)){printf("position is not correct!\n");return (0);}else{for(j=(*L).last;j>=i-1;j--){(*L).data[j+1]=(*L).data[j]; }(*L).last=(*L).last+1; (*L).data[i-1]=x;return (0);}} }void delete_same(sequenlist *s)//刪除表中相同的元素 {int i,j;int temp;for(i=0; i<=s->last; i++){ for(j=1; j<=s->last; j++){if(s->data[j] == s->data[i])//元素相同 {for(int k=j; k<s->last; k++){s->data[k] = s->data[k+1];}s->last = s->last - 1; }} } }int main() {sequenlist p={{1,3,2,6,5,4,9,7,8},8};//這里有9個(gè)數(shù),但數(shù)組下表是從0開(kāi)始的,所以 p.last = 8 print_list(&p);printf("\n");//查找printf("please input a value which you want: ");int value;//C++語(yǔ)法可以臨時(shí)定義一個(gè)變量,C語(yǔ)言不可以(需放在開(kāi)頭)。 scanf("%d",&value); //search(&p,10);search(&p,value);print_list(&p);printf("\n\n");//刪除表中的指定元素 delete_1(&p,8);printf("after delete:\n"); print_list(&p);//逆置順序表 printf("\n\nafter reverse:\n");reverse(&p);print_list(&p);//冒泡排序 printf("\nafter sort:\n");printf("\n");//list_bubble_sort(&try_1);list_bubble_sort(&p);print_list(&p); //往有序順序表中插入一個(gè)元素printf("\n\n");sequenlist try_1 = {{1,2,3,5,6,7},5};print_list(&try_1);printf("\n");printf("please input the value that you wan to insert into the sequenlist: ");int data;scanf("%d",&data);insert_in_order_list(&try_1,data);//insert_in_order_list(&try_1,9);print_list(&try_1);//刪除表中相同的元素printf("\n\n");sequenlist try_2= {{1,1,2,2,3,3,4,4},7};print_list(&try_2);printf("\ndelete the same element:\n");delete_same(&try_2);print_list(&try_2);printf("\n");//另一種玩法int n;int i;printf("\nplease input the number of elements: ");scanf("%d",&n);printf("please input %d values:\n",n); sequenlist try_3;try_3.last = n-1;//注意,數(shù)組的小標(biāo)從0開(kāi)始 for(i=0; i<=try_3.last; i++){scanf("%d",&try_3.data[i]);}print_list(&try_3);printf("\n\n");//在指定位置插入 insert(&try_3,1,22);print_list(&try_3);return 0; }程序運(yùn)行結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/sikongji-yeshan/p/10121654.html
總結(jié)
以上是生活随笔為你收集整理的线性表之顺序存储-顺序表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: bugku-杂项 convert
- 下一篇: Nginx系列篇二:linux搭建Ngi