#include#includetypedef int elemtype;
typedef struct nodedlink;
//建立雙鏈表
dlink * credlink(int n)
p->next=head->prior=null;
return head;
}//遍歷雙鏈表,和單鏈表相同
dlink *showlink(dlink *head)
printf("\n");
} //求表長操作
int getlen(dlink *head)
return len;
} //取元素操作(取出雙鏈表head中第i個結點的值)
int getelem(dlink *head,int i)
if(p==null)return 0;//結點i超過表長
e=p->data;
return e;
} //刪除節點(刪除雙鏈表中第i個節點)
dlink *deletei(dlink *head,int i)
if(p->next==null)return 0;//結點i超過表長
s=p->next;
s->next->prior=p;
p->next=s->next;
free(s);
return head;
} //定位操作(返回雙鏈表中第1個為值為x的結點的位置)
int locate(dlink *head,elemtype x)
if(p==null)return 0;
return i;
//return p;}
//插入操作(在雙鏈表中第i個結點之前插入乙個值為x的結點)
int insertx(dlink *head,elemtype x,int i)
if(p==null)return 0;//插入失敗,插入位置超出表長
s->data=x;
s->next=p->next;
s->prior=p;
p->next->prior=s;
p->next=s;
return 1;
}//輸出操作(從反方向輸出雙鏈表中各個結點的值)
dlink *invertshow(dlink *head)
while(p!=head)}
int main()
型別名 *a(int i,int j)
a是函式名,呼叫它以後能得到乙個指向整型資料得指標(位址)。x,y是函式a 得形參,為整型。請注意*a兩側沒有括號,在a 得兩側分別為*運算子和()運算子。而()的優先順序高於*,因此a先與()結合。顯然這是函式形式。這個函式前面有乙個*,表示此函式是指標型函式(函式值是指標)。最前面的int表示返回的指標指向整型變數。
C語言 雙鏈表
還是 程式設計師面試寶典 上的 include include typedef struct student dnode 建立雙鏈表 dnode create else cycle 0 p next null p head head head next head pre null free p 釋放...
雙鏈表 C語言
雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。簡單圖示 這次寫的雙鏈表的頭結點是不儲存資料的,所有資料都是存於頭結點的下乙個結點,即所有判斷都以頭結點的下乙個結點為準。資料簡介typedef struct dnode link 函式簡介link cre...
C 實現雙鏈表
主要實現了頭插,頭刪,尾插尾刪,任意位置的插入刪除,鍊錶的逆置以及鍊錶的深淺拷貝 在這裡說明一下,鍊錶用的最多的就是資料的插入什麼的,所以這裡解決深淺拷貝問題,用的是深拷貝,單鏈表,順序表也是一樣,都是用了深拷貝。雙向煉表相比較於單鏈表而言,相對複雜一點,有兩個指標,來進行實現鏈式結構 先面試具體 ...