單鏈表的轉置 排序操作

2021-08-16 14:11:25 字數 2180 閱讀 8076

該**主要是針對對鍊錶操作不是很熟悉的朋友,也是自己在面試當中經常 碰到的程式設計問題,因此利用業餘時間寫下了此練習性質的程式。以下是源**:

#include #include #include #include struct st;

void print(struct st*);

/*煉表頭節點的初始化*/

struct st *init()

/*插入節點,尾節點的插入,時間複雜度o(n)*/

int pushlist(struct st *ptr,char *name,int score)

while (e!=null)

e =malloc(sizeof(struct st));

if (e==null)

memcpy(e->name,name,strlen(name));

e->score =score;

ep->next =e;

e->next=null;

return 0;

}/*插入節點,尾節點的插入,時間複雜度o(1)*/

struct st **pushlisttail(struct st *ptr,struct st **next,char *name,int score)

e =malloc(sizeof(struct st));

memcpy(e->name,name,strlen(name));

e->score =score;

e->next =null;

*next =e;

next =&(e->next);

return next;

}/*轉置函式*/

void reverse(struct st **ptr)

*ptr =q;

}/*轉置函式 use 遞迴*/

struct st *reversefordigui(struct st *ptr)

struct st *newhead =reversefordigui(ptr->next);

ptr->next->next =ptr;

ptr->next=null;

return newhead;

}/*找到節點的最小值*/

struct st * findmin(struct st *ptr)

}return min;

}/*釋放單個節點*/

struct st *freenode(struct st *tmp,struct st *head)

for (cur =(head)->next;cur!=null;cur =cur->next)

p =p->next;

}if (cur==null)

}/*將最小值插入到新建立頭內*/

struct st *sort(struct st *ptr)

while (e)

e =malloc(sizeof(struct st));

memcpy(e->name ,tmp->name,strlen(tmp->name));

e->name[strlen(tmp->name)]='\0';

e->score=tmp->score;

ep->next =e;

e->next =null;

head =freenode(tmp,head);

if (head ==null)

break;

}return newhead;

}/*遍歷整個鍊錶*/

void print(struct st *ptr)

}/*釋放整個鍊錶*/

void myfree(struct st *ptr)

}/*簡單的測試*/

int main()

printf("------ before reverse--------\n");

print(head);

printf("------ reverse after--------\n");

reverse(&head);

print(head);

printf("-------sort -------------\n");

sorthead=sort(head);

print(sorthead);

myfree(sorthead);

}

單鏈表轉置

編寫乙個單鏈表反序的函式 include include typedef int datatype using namespace std typedef struct node node void initnode node head void printnode node head cout e...

單鏈表轉置

單鏈表轉置都很熟裡,這裡只是練一下鍊錶操作,另外還有幾點需要注意,如果是遞迴解決該問題呢,如果是相鄰兩個轉置有怎麼處理。1.單鏈表轉置非遞迴 void reverse struct node list list pleft 2.單鏈表轉置遞迴 struct node recursive revers...

單鏈表轉置

關於單鏈表的逆置,大家都很清楚有兩種基本方法 1 普通的迴圈的方法。2 遞迴呼叫方法。今天正好研究這兩種方法,發現很不理解 這麼寫的具體的作用,誠如很多人所說,吃透這個還是要自己畫乙個詳細的過程圖。今天就給大家介紹一下 普通的迴圈方法 我學習下來的一些經驗,如有不對之處還望大家一起交流。首先,以下是...