线性表的顺序存储结构

来源:互联网 发布:sql where 优先级 编辑:程序博客网 时间:2024/05/16 02:06
</pre>顺序表的建立,查找,插入,删除。。。。<pre name="code" class="html"># include <stdio.h># include <stdlib.h>typedef struct Arr{int * pBase;int len;} Sqlist; // struct Arr Sqlistvoid Creat_list(Sqlist * pArr, int length);    //创建,bool Empty_list(Sqlist  pArr);        //空void Printf_list(Sqlist pArr, int length);//输出void Get_list1(Sqlist pArr);//按顺序查找int Get_list2(Sqlist pArr, int );//按值查找void Insert_list(Sqlist pArr,int loc, int val); //顺序表的插入  位置 值void Sqlist_intersect(Sqlist A, Sqlist B, Sqlist * C);//求顺序表A B的交集int main(void){Sqlist  A, B, C;//pArrC.pBase = NULL;    int length;  //loc, valprintf("请输入线性表的长度:");    scanf("%d", &length);A.len = B.len = length;    Creat_list(&A, length);Creat_list(&B, length);//Creat_list(&pArr, length);//Printf_list(pArr, length);//可以写成指针,也可写成普通变量//  Get_list1(pArr);//printf("输入要查找的值:");//scanf("%d", &val);//if ( int k =  Get_list2(pArr, val) )···//printf("该数值的位置是:%d\n", k);//else //printf("该数值不存在\n");//printf("输入插入的位置和值:");//scanf("%d %d", &loc, &val);//Insert_list(pArr , loc, val);//for (int i=0; i<length+1; ++i)//printf("%d ", pArr.pBase[i]);//printf("\n");Sqlist_intersect(A, B, &C);return 0;}void Creat_list(Sqlist * pArr, int length){pArr->pBase = (int *)malloc(sizeof(int) * length);if (pArr->pBase == NULL){printf("动态内存分配失败!\n");exit(-1);}for (int i=0; i<length; ++i){scanf("%d", &pArr->pBase[i]);}}bool Empty_list(Sqlist pArr){if (pArr.len == 0)return true;elsereturn false;}void Get_list1(Sqlist pArr){int i, val;printf("输入要查找元素的位置:");scanf("%d", &i);if (i<1 || i>pArr.len){printf("输入位置非法\n");return ;}elseval = pArr.pBase[i-1];printf("%d\n", val);return ;}int Get_list2(Sqlist pArr, int val){for (int i=0; i<pArr.len; ++i){if (val == pArr.pBase[i])return i+1;}return 0;} void Printf_list(Sqlist pArr, int length){int i;if ( Empty_list(pArr) ){printf("线性表为空\n");}else{for (i=0; i<pArr.len; ++i){printf("%d ", pArr.pBase[i]);}printf("\n");}}void Insert_list(Sqlist pArr, int loc, int val){if (loc<1 || loc>pArr.len+1)printf("插入失败:\n");for (int i=pArr.len; i>=loc; --i)pArr.pBase[i] = pArr.pBase[i-1];pArr.pBase[loc-1] = val;return;}void Sqlist_intersect(Sqlist A, Sqlist B, Sqlist *C){int k = 0;for (int i=0; i<A.len; ++i){for (int j=0; j<B.len; ++j){if ((A.pBase[i] == B.pBase[j])){C->pBase[k] = A.pBase[i];k++;}}}C->len = k;Printf_list(*C, k);}

0 0