連結串列插入(線性表)
阿新 • • 發佈:2018-12-23
題目描述
(線性表)已知一單鏈表,從第二個結點至表尾遞增有序,(設a1<x<an)如下圖(“第二個結點至表尾”指a1…an )。試編寫程式,將第一個結點刪除並插入表中適當位置,使整個連結串列遞增有序。
輸入
輸入長度n:7
輸入資料:4 1 2 3 6 8 9
輸出
1 2 3 4 6 8 9
樣例輸入
5
11 7 8 9 10
樣例輸出
7 8 9 10 11
分析:
此題,考察連結串列的插入。基本思想只要是判斷,在插入。
#include"stdio.h" #include"string.h" typedef struct a{ int node; struct a *next; }*LinkList,Node; void CreatListTail(LinkList *T,int n) { int i; LinkList p,r; *T=(LinkList)malloc(sizeof(Node)); r=*T; for(i=0;i<n;i++) { p=(LinkList)malloc(sizeof(Node)); scanf("%d",&(p->node)); r->next=p; r=p; } r->next=NULL; } int main() { LinkList head,T,pre,NODE; int i,j,k; int n; while(~scanf("%d",&n)) { CreatListTail(&head,n); T=head->next->next; NODE=head->next; pre=head->next; // printf("T->node=%d\n",T->node); while(T!=NULL&&NODE->node>T->node) { pre=T; T=T->next; } //printf("T->node=%d\n",T->node); if(NODE->next!=T) { head->next=NODE->next; NODE->next=T; pre->next=NODE; } head=head->next; while(head!=NULL) { printf("%d ",head->node); head=head->next; } } }