链表的顺序存储
鏈表的順序存儲無非就是在一個結構體數組里面集成了許多函數的操作,使之算法變得更加簡單。
#include<stdio.h> #include<windows.h> #define maxsize 100 typedef int datatype; typedef struct {datatype a[maxsize];int size; }sequence_list;void init(sequence_list* slt) {slt->size=0; }//值空表。void append(sequence_list* slt,datatype x) {if(slt->size==maxsize) {printf("順序表是滿的!");exit(1); }slt->a[slt->size]=x;slt->size=slt->size+1; }//順序表后部進行插入操作。void display(sequence_list slt) {int i;if(!slt.size)printf("\n順序表是空的!");elsefor(i=0;i<slt.size;i++)printf("%5d",slt.a[i]); }//打印順序表的各個節點值。int empty(sequence_list slt) {return (slt.size==0?1:0); }//判斷順序表是否為空。int find(sequence_list slt,datatype x) {int i=0;while(i<slt.size&&slt.a[i]!=x) i++;return (i<slt.size?i:-1); }//查找順序表中值為x的節點位置。datatype get(sequence_list slt,int i) {if(i<0||i>=slt.size) {printf("\n指定位置的節點不存在!");exit(1);}elsereturn slt.a[i]; }//取得順序表中第i個節點的值。void insert(sequence_list *slt,datatype x,int position) {int i;if(slt->size==maxsize) {printf("\n順序表滿了,沒辦法插入!");exit(1);}if(position<0||position>slt->size) {printf("\n指定的位置不存在!");exit(1);} // for(i=slt->size;i>position;i--) { // slt->a[position]=x; // slt->size++; // }for(i=slt->size;i>position;i--) {slt->a[i]=slt->a[i-1];}slt->size++;slt->a[position]=x; }//在順序表的position位置插入值為x的節點。void dele(sequence_list *slt,int position) {int i;if(slt->size==0) {printf("\n順序表是空的!");exit(1); }if(position<0||position>=slt->size) {printf("\n指定的刪除位置不存在!");exit(1);}for(i=position;i<slt->size-1;i++)slt->a[i]=slt->a[i+1];slt->size--; }//刪除表中第position位置的節點。int main() {return 0; }總結
- 上一篇: 白茶泡枸杞的功效与作用、禁忌和食用方法
- 下一篇: 车前草和蒲公英泡水喝的功效与作用、禁忌和