SeqList L;//L只是個默認構造,在后面執行基本是統一的0值;執行前應該設置實體數據
創新互聯是一家專業提供南丹企業網站建設,專注與成都網站設計、網站制作、html5、小程序制作等業務。10年已為南丹眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。
L=Selection(L.length);//改為L=Selection(L);原函數調用與函數定義不符,有語法錯誤;L.length是個int 類型,函數定義的參數類型是SeqList;
SeqList Selection(SeqList L) 內部邏輯不夠簡捷,多多練習;
if (L.data[j]L.data [i]){}//可直接交換,k標志沒什么作用。
完整代碼:
#include stdio.h
#include stdlib.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("順序表是空的");
else
for(i=0;islt.size;i++)
printf("%5d",slt.a[i]);
printf("\n");
}
int empty (sequence_list *slt)
{
memset(slt,0,sizeof(sequence_list));
return(slt-size==0?1:0);
}
int find (sequence_list slt,datatype x)
{
int i=0;
while(islt.size slt.a[i]!=x)
i++;
return(islt.size ? i:-1);
}
datatype get(sequence_list slt,int i)
{
if(i0||i=slt.size)
{
printf("\n指定位置的節點不存在");
exit(1);
}
else
? return slt.a[i];
}
void insert(sequence_list *slt,datatype x,int position)
{
int i;
if(slt-size==MAXSIZE)
{
printf("\n順序表是滿的,無法插入");
exit(1);
}
if(position0||positionslt-size)
{
printf("\n指定的插入位置不存在");
exit(1);
}
for(i=slt-size;iposition;i--)
slt-a[i]=slt-a[i-1];
slt-a[position]=x;
slt-size++;
}
void dele(sequence_list *slt,int position)
{
int i;
if(slt-size==0)
{
printf("\n順序表是空的,無法刪除");
exit(1);
}
if(position0||position=slt-size)
{
printf("\n指定的刪除位置不存在");
exit(1);
}
for(i=position;islt-size-1;i++)
? slt-a[i]=slt-a[i+1];
? slt-size--;
}
int main()
{
sequence_list slt;
bool exit_flag=false;
int fun_num=1;
datatype data=0;
int i=0;
printf("1.初始化 ?2.增加節點 ?3.顯示 ?4.清空 ?5.查找\n6.獲取節點 7.插入節點 ?8.刪除節點 ?9.退出 ?0.清屏\n");
while (!exit_flag)
{
printf("請選擇功能:\n");
scanf("%d",fun_num);
switch (fun_num)
{
case 1:
init(slt);
break;
case 2:
printf("請輸入數據:\n");
scanf("%d",data);
append(slt,data);
break;
case 3:
display (slt);
break;
case 4:
empty (slt);
break;
case 5:
printf("請輸入查找的數據:\n");
scanf("%d",data);
printf("查找到的數據位置為:%d",find (slt,data));
printf("\n");
break;
case 6:
printf("請輸入數據位置:\n");
scanf("%d",i);
printf("該位置的數據為:%d",get(slt,i));
printf("\n");
break;
case 7:
printf("請輸入插入節點位置:\n");
scanf("%d",i);
printf("請輸入插入節點數據:\n");
scanf("%d",data);
insert(slt,data,i);
break;
case 8:
printf("請輸入刪除節點位置:\n");
scanf("%d",i);
dele(slt,i);
break;
case 9:
exit_flag=true;
break;
case 0:
system("CLS");
printf("1.初始化 ?2.增加節點 ?3.顯示 ?4.清空 ?5.查找\n6.獲取節點 7.插入節點 ?8.刪除節點 ?9.退出 ?0.清屏\n");
break;
default:
break;
}
}
return 0;
}
效果如下圖,調試通過,所有功能好使
#include?stdio.h
#include?stdlib.h
typedef?int?DataType;?//?定義數據數據類型
typedef?struct?{
DataType?*data;???//?data指向數據區的首個數據
int?length;???????//?數據長度
}SqList;
void?Sort(SqList?*L)?{
int?i,j,k;
DataType?tmp;
for(i?=?0;?i??L-length?-?1;?++i)?{
k?=?i;
for(j?=?i?+?1;?j??L-length;?++j)
if(L-data[k]??L-data[j])
k?=?j;
if(k?!=?i)?{
tmp?=?L-data[k];
L-data[k]?=?L-data[i];
L-data[i]?=?tmp;
}
}
}
SqList?*CreateList(DataType?a[],int?n)?{
int?i;
SqList?*L;
L?=?(SqList?*)malloc(sizeof(SqList));
L-data?=?(DataType?*)malloc(n?*?sizeof(DataType));
L-length?=?n;
for(i?=?0;?i??n;?++i)?L-data[i]?=?a[i];
Sort(L);
return?L;
}
int?InsertList(SqList?*L,DataType?x)?{
int?i,j;
for?(i?=?0;i??L-length;i++)?{
if(x?=?L-data[i])?{
for(j?=?L-length;j?=?i;j--)
L-data[j?+?1]?=?L-data[j];?//?結點后移
L-data[i]?=?x;
L-length++;
return?1;
}
}
L-data[L-length++]?=?x;
return?1;
}
int?RemoveListElem(SqList?*L,DataType?d)?{
int?i,j;
for(i?=?0;?i??L-length;?++i)?{
if(L-data[i]?==?d)?{
for(j?=?i;?j??L-length?-?1;?++j)
L-data[j]?=?L-data[j?+?1];
L-length--;
return?1;
}
}
return?0;
}
SqList?*AndList(SqList?*A,?SqList?*B)?{???/*?A∩B?*/
int?i,j,k?=?0;
int?len?=?(A-length??B-length)???B-length?:?A-length;
SqList?*C?=?(SqList?*)malloc(sizeof(SqList));
C-length?=?len;
C-data?=?(DataType?*)malloc(len?*?sizeof(DataType));
for(i?=?0;?i??A-length;?++i)?{
for(j?=?0;?j??B-length;?++j)?{
if(A-data[i]?==?B-data[j])?{
C-data[k++]?=?A-data[i];
break;
}
}
}
C-length?=?k;
return?C;
}
SqList?*OrList(SqList?*A,?SqList?*B)?{???/*?A∪B?*/
int?i,j,flag;
DataType?e;
SqList?*C?=?(SqList?*)malloc(sizeof(SqList));
C-length?=?A-length?+?B-length;
C-data?=?(DataType?*)malloc(C-length?*?sizeof(DataType));
for(i?=?0;?i??A-length;?++i)?C-data[i]?=?A-data[i];
for(i?=?0;?i??B-length;?++i)?{
e?=?B-data[i];
flag?=?1;
for(j?=?0;?j??C-length;?++j)?{
if(e?==?C-data[j])?{
flag?=?0;
break;
}
}
if(flag)?InsertList(C,e);
}
return?C;
}
void?PrintList(SqList?*L)?{
int?i;
for(i?=?0;?i??L-length;?++i)
printf("%d?",L-data[i]);
printf("\n");
}
void?FreeList(SqList?*L)?{
free(L-data);
free(L);
}
void?main()?{
DataType?x;
DataType?arra[]?=?{36,24,31,5,90,65,70,39,37};
DataType?arrb[]?=?{9,8,43,51,37,89,33,46,29,80,56};
int?alen?=?sizeof(arra)/sizeof(arra[0]);
int?blen?=?sizeof(arrb)/sizeof(arrb[0]);
SqList?*A?=?CreateList(arra,alen);
printf("A線性表為:?");
PrintList(A);
SqList?*B?=?CreateList(arrb,blen);
printf("B線性表為:?");
PrintList(B);
SqList?*C?=?AndList(A,B);
SqList?*D?=?OrList(A,B);
printf("?C?=?A∩B:?");
PrintList(C);
printf("?D?=?A∪B:?");
PrintList(D);
printf("在D表中插入數據?:?");
scanf("%d",x);
InsertList(D,x);
printf("D表插入x后?:");
PrintList(D);
printf("刪除D表中數據?:?");
scanf("%d",x);
RemoveListElem(D,x);
printf("刪除x后的D表為?:");
PrintList(D);
FreeList(A);
FreeList(B);
FreeList(C);
FreeList(D);
}
當前名稱:c語言順序表主函數 c語言創建一個順序表主函數
分享地址:http://m.newbst.com/article24/dogphce.html
成都網站建設公司_創新互聯,為您提供做網站、商城網站、網站設計、手機網站建設、App開發、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯