順序表 C 實現

2021-09-17 01:17:00 字數 4316 閱讀 5185

(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 ...