(1)求順序表中第i個元素(函式),若不存在,報錯。
(2)在第i個結點前插入值為x的結點。
(3)刪除順序表中第i個元素結點。
(4)在乙個遞增有序的順序表l中插入乙個值為x的元素,並保持其遞增有序特性。
(5)將順序表l中的奇數項和偶數項結點分解開(元素值為奇數、偶數),分別放入新的順序表中,然後原表和新錶元素同時輸出到螢幕上,以便對照求解結果。
(6)求兩個遞增有序順序表l1和l2中的公共元素,放入新的順序表l3中。
(7)刪除遞增有序順序表中的重複元素,並統計移動元素次數,要求時間效能最好。
定義順序表:
typedef struct slist
seqlist;
#ifndef _seqlist_h_
#define _seqlist_h_
#include #define maxlen 100
typedef int elementtype ;
typedef struct slist
seqlist;
//初始化順序表
void initlist( seqlist * l)
//1.求順序表中第i個元素,存在返回1,否則返回0
int getelement(seqlist l,int i,elementtype * x)
else
}//2.在第i個結點前插入值為x的結點。
int listinsert(seqlist * l, int i,elementtype x)
else if(i<1 || i>l->len+1)
else
l->data[i-1]=x;
l->len++; //修改表的長度
return 1;
}}//3.刪除順序表中第i個元素結點。
int deleteknot(seqlist * l,int i)
else if(i<1 || i>l->len)
else
l->len--; //修改表的長度
return 1;
}}//4.在乙個遞增有序的順序表l中插入乙個值為x的元素,並保持其遞增有序特性。
void insertorderlist(seqlist * l,int x)
while(l->data[i]<=x)
else
}listinsert(l,i+1,x);
}//遍歷順序表
void print(seqlist * l)
printf("\n");
}//5.將順序表l中的奇數項和偶數項結點分解開(元素值為奇數、偶數),分別放入新的順序表中,然後原表和新錶元素同時輸出到螢幕上,以便對照求解結果。
void analyzelist(seqlist * l,seqlist * l1,seqlist * l2)
}else}}
}//6.求兩個遞增有序順序表l1和l2中的公共元素,放入新的順序表l3中。
void commonlist(seqlist * l1,seqlist * l2,seqlist * l3)
i++;
p++;
q++;
}else if(l1->data[p]data[q])
else
}}//7.刪除遞增有序順序表中的重複元素,並統計移動元素次數
void deletereaptelement(seqlist * l)
else
}l->len=i+1; //修改順序表l的長度
printf("移動元素次數為:%d ",cou);
}void scan(seqlist * l)
}#endif // _seqlist_h_
#include #include #include "seqlist.h"
int main()
else
break;
case 2:
printf("請輸入元素位置:");
scanf("%d",&j);
if(!getelement(l,j,&x))
else
break;
case 3:
printf("請輸入刪除元素位置:");
scanf("%d",&j);
if(!deleteknot(&l,j))
else
break;
case 4:
initlist(& l);
printf("輸入-1結束,");
printf("請輸入順序表l資料:\n");
scan(& l);
printf("表l為:");
print(&l);
printf("請輸入插入的元素:");
scanf("%d",&x);
insertorderlist(&l,x);
printf("插入元素後順序表為:");
print(&l);
initlist( & l);
break;
case 5:
initlist(& l);
initlist(& l1);
initlist(& l2);
printf("輸入-1結束\n");
printf("請輸入順序表l資料:\n");
scan(& l);
printf("表l為:");
print(&l);
analyzelist(&l,&l1,&l2);
printf("表l1為:");
print(&l1);
printf("表l2為:");
print(&l2);
initlist( & l);
break;
case 6:
initlist(& l1);
initlist(& l2);
initlist(& l3);
printf("輸入-1結束,");
printf("請輸入順序表l1資料\n");
scan(& l1);
printf("表l1為:");
print(&l1);
printf("輸入-1結束,");
printf("請輸入順序表l2資料\n");
scan(& l2);
printf("表l2為:");
print(&l2);
commonlist(&l1,&l2,&l3);
printf("表l3為:");
print(&l3);
break;
case 7:
printf("輸入-1結束,");
printf("請輸入遞增有序順序表l資料\n");
scan(& l);
printf("表l為:");
print(&l);
deletereaptelement(&l);
printf("刪除重複元素後順序表l資料為:");
print(&l);
initlist( & l);
break;
case 8:
printf("輸入-1結束,");
printf("請輸入順序表l資料\n");
scan( &l);
printf("表l為:");
順序表(C 實現)
順序表是基本的資料結構,建立seqlist類,主要包括類的預設成員函式 建構函式 析構函式 賦值運算子過載 順序表的基本功能實現。順序表 typedef int datatype class seqlist seqlist 析構函式 深拷貝 seqlist const seqlist s 拷貝建構函...
C 實現順序表
順序表 用一段位址連續的儲存單元一次儲存資料元素的線性結構。目的 比較陣列 下來用 來實現順序表的各個功能 includeusing namespace std typedef int datatype class seqlist seqlist const seqlist s 拷貝建構函式 els...
c 實現順序表
include using namespace std define max size 20 define ok 1 define error 0 typedef int status typedef int elemtype 元素型別可以改變,假定這裡為int class sqlist void ...