標題:
C語言線性表的順序存儲結(jié)構(gòu)
[打印本頁]
作者:
qiushuliang
時間:
2023-4-21 14:28
標題:
C語言線性表的順序存儲結(jié)構(gòu)
#include <stdio.h>
#include <stdlib.h>
// 線性表的順序存儲結(jié)構(gòu)
#define ListSize 100
typedef char DataType;
typedef struct{
DataType data[ListSize];
int length;
}SeqList;
SeqList mylist;//global value
//在指定位置插入元素
void InsertList(SeqList *L,int pos,DataType val)
{
int i,q=0;
if(pos<1 || pos>L->length+1) // 假如順序表為 1,2,3,4,5,可以插入的位置是1,2,3,4,5,6
{
printf("position error\n");
return;
}
if(L->length>=ListSize){ //當length=ListSize時,表示順序表已滿
printf("overflow\n");
return;
}
for( i=L->length ;i>=pos;i--){ //當i的位置為1——length+1時需要移動length-i+1
L->data[i]=L->data[i-1];
q++;
}
L->data[pos-1]=val;
printf("循環(huán)體執(zhí)行了%d次,理論上計算值為n-i+1次%d\n",q,L->length-pos+1);
L->length ++;
printf("在順序表中插入新的元素%c在表中%d的位置",val,pos);
}
DataType DeleteList(SeqList *L,int pos)//在順序表L中第i個位置之前插入一個新的元素下
{
int i,q=0;
DataType x;
if(pos<1 || pos>L->length)
{
printf("position error\n");
exit (0); //程序非正常退出,并給一個統(tǒng)一的返回值0,在stdlib.h中有定義
}
x=L->data[pos-1];
/* for(i=pos-1;i+1<L->length ;i++){
q++;
L->data[i]=L->data[i+1];
}
*/
for(i=pos;i<L->length;i++) {
q++;
L->data[i-1]=L->data[i];
}
L->length --;
printf("表中位置%d的元素%c已經(jīng)被刪除了\n",pos,x);
printf("循環(huán)體執(zhí)行了%d次,理論上計算值為n-i次%d\n",q,L->length+1-pos);
return x;
}
void PrintList(SeqList *L) //打印輸出順序表
{
int i;
for(i=0;i<L->length;i++){
printf("%c,",L->data[i]);
}
printf("\n");
}
//創(chuàng)建一個順序表
CreateList(SeqList *L)
{
int i=0;
L->length=0;
char ch;
ch=getchar();
printf("創(chuàng)建的順序表如下:");
while(ch!='\n'){
L->data[i]=ch;
L->length++;
ch=getchar();
printf("%c,",L->data[i]);
i++;
}
printf("表長length=n=%d\n",L->length);
}
//順序表逆置
void Converts(SeqList *L){
int i;
DataType temp;
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;
}
return;
}
void MaxMin(SeqList *L,DataType*max,DataType *min,int *k,int *j){
int i;
*max=L->data[0];*min=L->data[0];
*k=*j=0;
for(i=1;i<L->length;i++) {
if(L->data[i]>*max){
*max=L->data[i];*k=i;
}
else if (L->data[i]<*min){
*min=L->data[i];*j=i;
}
}
}
int main()
{
int max=0,min=0,k=0,j=0;
CreateList(&mylist);
InsertList(&mylist,9,'A');
PrintList(&mylist);
DeleteList(&mylist,9);
PrintList(&mylist);
Converts(&mylist);
PrintList(&mylist);
MaxMin(&mylist,&max,&min,&k,&j);
printf("max=%c,min=%c,k=%d,j=%d",max,min,k,j);
return 0;
}
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1