完整代碼:
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網營銷推廣、網站重做改版、翔安網站定制設計、自適應品牌網站建設、HTML5、商城網站建設、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為翔安等各大城市提供網站開發(fā)制作服務。
#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指定位置的節(jié)點不存在");
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.增加節(jié)點 ?3.顯示 ?4.清空 ?5.查找\n6.獲取節(jié)點 7.插入節(jié)點 ?8.刪除節(jié)點 ?9.退出 ?0.清屏\n");
while (!exit_flag)
{
printf("請選擇功能:\n");
scanf("%d",fun_num);
switch (fun_num)
{
case 1:
init(slt);
break;
case 2:
printf("請輸入數(shù)據(jù):\n");
scanf("%d",data);
append(slt,data);
break;
case 3:
display (slt);
break;
case 4:
empty (slt);
break;
case 5:
printf("請輸入查找的數(shù)據(jù):\n");
scanf("%d",data);
printf("查找到的數(shù)據(jù)位置為:%d",find (slt,data));
printf("\n");
break;
case 6:
printf("請輸入數(shù)據(jù)位置:\n");
scanf("%d",i);
printf("該位置的數(shù)據(jù)為:%d",get(slt,i));
printf("\n");
break;
case 7:
printf("請輸入插入節(jié)點位置:\n");
scanf("%d",i);
printf("請輸入插入節(jié)點數(shù)據(jù):\n");
scanf("%d",data);
insert(slt,data,i);
break;
case 8:
printf("請輸入刪除節(jié)點位置:\n");
scanf("%d",i);
dele(slt,i);
break;
case 9:
exit_flag=true;
break;
case 0:
system("CLS");
printf("1.初始化 ?2.增加節(jié)點 ?3.顯示 ?4.清空 ?5.查找\n6.獲取節(jié)點 7.插入節(jié)點 ?8.刪除節(jié)點 ?9.退出 ?0.清屏\n");
break;
default:
break;
}
}
return 0;
}
效果如下圖,調試通過,所有功能好使
假設前面定義過鏈表p了,待查找的是n。
q=p;
while (q-next!=null *q!=n)
q=q-next;
if (*q!=n) printf("no suitable value")
在這個程序中,輸入的10個數(shù)字,是以空格 隔開的。如果想用逗號隔開,會比較麻煩。
既然上面是空格隔開的,下面倒數(shù)第三行printf("%d in %d",key,i);key和i用空格隔開不用逗號是不行的。這是程序語句規(guī)定的,各輸出項之間必須要用逗號分隔。這個與上面所說的運行時輸入各數(shù)據(jù)用什么分隔(它是可以指定的)是兩碼事。