在以前鏈表的基礎上改良的鏈表

在以前鏈表的基礎上改良的鏈表,不用輸入要建立的鏈表長度,直接插入節點就是node

code:函數

#include<stdio.h>spa

#include<malloc.h>code

#include<stdlib.h>排序

typedef struct node內存

{qt

int data;it

struct node *pnext;io

}Node,*Pnode;基礎

Pnode creat_list();//鏈表建立函數

void traverse_list(Pnode phead);//遍歷鏈表函數 

bool insert_list(Pnode phead ,int weizhi,int shu);//鏈表加節點函數

bool delete_list(Pnode phead,int weizhi);//鏈表刪除節點函數

bool is_empty(Pnode phead);//判斷鏈表是否爲空函數

bool is_full(Pnode phead);//判斷鏈表是否滿函數,我這樣建立鏈表就不存在空鏈表,因此這個函數不要 

void sort_list(Pnode phead);//鏈表排序函數

int lenght_list(Pnode phead);//求鏈表長度函數 

 

int main()

{

int len;

Pnode phead;

phead=creat_list();

traverse_list(phead);

insert_list(phead,1,55);

insert_list(phead,2,525);

insert_list(phead,1,535);

traverse_list(phead);

sort_list(phead);

traverse_list(phead);

delete_list(phead,3);

traverse_list(phead);

len=lenght_list(phead);

printf("鏈表的長度爲:%d\n",len);

return 0;

}

Pnode creat_list()

{

Pnode phead=(Pnode)malloc(sizeof(Node));

if(phead==NULL)

{

printf("建立鏈表失敗");

exit(1); 

}

phead->pnext=NULL;

return phead;

bool insert_list(Pnode phead,int weizhi,int shu)

{    int i=0;

Pnode ptail=phead;

while(ptail!=NULL && i<weizhi-1)

{

ptail=ptail->pnext;

i++;

}

if(i>weizhi-1||NULL==ptail)

return false;

else

{

Pnode tail=ptail->pnext;

Pnode qtail=(Pnode)malloc(sizeof(Node));

if(NULL==qtail)

{

printf("內存分配失敗!\n");

exit(1);

}

qtail->data=shu;

ptail->pnext=qtail;

qtail->pnext=tail;

return true;

}

bool delete_list(Pnode phead,int weizhi)

{

int i=0;

Pnode ptail=phead;

while(ptail->pnext!=NULL && i<weizhi-1)

{

ptail=ptail->pnext;

i++;

}

if(i>weizhi-1||NULL==ptail)

return false;

else

{

Pnode tail=ptail->pnext;

ptail->pnext=tail->pnext;//注意這裏,剛出錯了 

free(tail);

tail=NULL;

// ptail=ptail->pnext;

return true;

}

void traverse_list(Pnode phead)

{

Pnode ptail=phead->pnext;//ptail指向首節點 

while(ptail!=NULL)

{

printf("%d ",ptail->data);

ptail=ptail->pnext;

}

printf("\n");

}

bool is_empty(Pnode phead)

{

if(phead->pnext==NULL)

return true;

else

return false;

}

int lenght_list(Pnode phead)

{

int len=0;

Pnode tail=phead->pnext;

while(tail!=NULL)

{

len++;

tail=tail->pnext;

}

return len;

}

void sort_list(Pnode phead)

{Pnode p,q;

int i,j;

int len=lenght_list(phead);

if(is_empty(phead))

{

printf("空鏈表不需排序!\n");

}

else

 

for(i=0,p=phead->pnext;i<len-1;i++,p=p->pnext)

{

for(j=i+1,q=p->pnext;j<len;j++,q=q->pnext)

{

if(p->data>q->data)

{

int temp=p->data;

p->data=q->data;

q->data=temp;

}

}

}

return ;

相關文章
相關標籤/搜索