一般呢,插入和刪除函數(shù)是分開(kāi)寫(xiě)的,還有分成兩種存儲(chǔ)結(jié)構(gòu),1.順序表,2.鏈表,我給你一個(gè)我上數(shù)據(jù)結(jié)構(gòu)時(shí)候?qū)懙逆湵淼牟僮?,里面全都有,如果不?huì)用,追問(wèn)我
創(chuàng)新互聯(lián)從2013年成立,先為觀(guān)山湖等服務(wù)建站,觀(guān)山湖等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為觀(guān)山湖企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
#includestdio.h
#includemalloc.h
#includeWindows.h
#includeconio.h
#includestdlib.h
typedef struct
{
int data;
struct LNode *next;
}LNode;
LNode *Listinit(LNode *L)//初始化鏈表返還頭指針
{
L = (LNode *)malloc(sizeof(LNode));
if (!L)return 0;
L-next = NULL;
return L;
}
int GetElem_L(LNode *L, int i, int *e)//取第i個(gè)元素
{
int j;
LNode *p;
p=L-next;j=1;
while(pji)
{
p=p-next;++j;
}
if(!p||ji) return 0;//i超過(guò)表長(zhǎng)
*e=p-data;
return 1;
}
int ListInsert_L(LNode *L, int i, int e)//插入數(shù)據(jù)元素
{
LNode *p1 = L,*p2=L;
int j = 0;
if (i-1 LinkLength(L))
return 2;
while(p1!=NULL ji-1)
{
p1 = p1-next;
j++;
}
p2 = (LNode *)malloc(sizeof(LNode));
if (!p2)
return 0;
p2-data = e;
p2-next = p1-next;
p1-next = p2;
return 1;
}
void ClearList(LNode *L)//重置為空表
{
LNode *p;
while(L-next)
{
p=L-next;
L-next=p-next;
free(p);
}
}
void print_link(LNode *L)//輸出函數(shù)
{
LNode *p = L;
p = p-next;
while (p != NULL)
{
printf("%5d", p-data);
p = p-next;
}
}
int ListDlete_L(LNode *L, int i, int *e)//刪除L中I,并用e返回
{
int j = 0;
LNode *p1 = NULL, *p2 = NULL;
p1 = L;
while (p1-next != NULL j i - 1)
{
p1 = p1-next;
j++;
}
if (p1-next == NULL || j i - 1)
return 0;
p2 = p1-next;
p1-next = p2-next;
free(p2);
return 1;
}
int LinkLength(LNode *L)//鏈表的長(zhǎng)度
{
int i = 0;
LNode *p = L-next;
while (p != NULL)
{
i++;
p = p-next;
}
return i;
}
這個(gè)很簡(jiǎn)單啊?;镜乃悸肪褪窍炔檎业讲迦牖蛘邉h除的數(shù)字所在數(shù)組的位置,如果是插入,就把之后的依次想后挪動(dòng)一個(gè),然后插入;如果是刪除,把之后的依次想前移動(dòng)一個(gè)就行了,不過(guò)別忘了處理最后一個(gè)數(shù)字就行了。要是還有問(wèn)題,我?guī)湍銓?xiě)個(gè)算了。
你只需要建立一個(gè)數(shù)組,將數(shù)組建立的大一點(diǎn),然后分兩次輸入數(shù),構(gòu)建一個(gè)數(shù)組,在整體排序輸出就行了