線性表的應用3(單鏈表的基本實現和逆置)

2021-07-10 23:50:20 字數 1293 閱讀 5373

設計演算法實現帶頭節點單鏈表的逆置。

演算法分析:整個過程中用到兩根新引入的指標

建立起乙個擁有n個元素的單鏈表以後,首先用一根指標指向頭結點,即把它記錄下來,然後把頭結點摘下來,並把其l->next指標域置空,然後再借助於另外一根指標,把原煉表中的節點依次插入頭結點的後面(每一次都是直接插到頭結點後面喲~),即完成了鍊錶中元素的就地逆置。

**實現:

#include #include #include using namespace std;

typedef int elemtype;

typedef struct lnode

lnode,*linklist;

linklist create()

else return null;

}int getelem(linklist l,int i,elemtype &e)

if(!p||j>i)

e=p->data;

return 1;

}int listinsert(linklist &l,int i,elemtype e)

if(!p||j>i-1)

return 0;

s=(linklist)malloc(sizeof(lnode));

s->data=e;

s->next=p->next;

p->next=s;

return 1;

}int listdelete(linklist &l,int i,elemtype &e)

if(!(p->next)||j>i-1) return 0;

q=p->next;

p->next=q->next;

e=q->data;

free(q);

return 1;

}void nizhi(linklist &l)

}void output(linklist l)

printf("\n");

}void freelink(linklist &l)

}int main()

{ int n,e,flag;

lnode *lhead;

while(scanf("%d",&n)!=eof)

{lhead=create();

if(lhead!=null)

{for(int i=1;i<=n;i++)

{scanf("%d",&e);

flag=listinsert(lhead,i,e);

if(flag==0)

{cout<<"insert fail"<

2 2 線性表的單鏈表

ps 1 p l的結點都是指標型別 2 頭結點插入與輸出的順序相反 3 注意左值與右值的區別 p next q next q next是指到的下乙個結點,非指標本身 p next是指標本身 即p的指標域 與左值右值有關 4 後移用p p next 不用 p 因為位址不連續 p next 表示指標變數...

線性表之單鏈表

cpp view plain copy linkedlist linc 2013.2.26 include include include define ok 1 define error 1 define ture 1 define false 0 struct node typedef stru...

線性表及單鏈表

一.頭指標與頭結點的異同 頭指標 頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字。無論鍊錶是否為空,頭指標均不為空,頭指標是鍊錶的必要元素。頭結點 頭結點是為了操作的統一和方便而建立的,放在第一元素的結點之前,其資料域一般無...