單連結串列的建立,插入,建立一個單連結串列,並實現插入,刪除操作

時間 2021-09-05 11:55:52

1樓:匿名使用者

#include

#include

struct node

;/*建立單連結串列的函式,返回的是頭結點*/struct node *create_slist()r->next='\0';

return h;

}/*輸出連結串列的函式,形參為頭結點*/

void print_slist(struct node *h)printf("->end\n");}}

/*插入結點的函式*/

void insert_node(struct node *h,int x)

else

}if(s->data<=q->data)//如果插入的值比最小值(也是最後一個值)小,則插入在最後面

else//如果插入的值比最大值(也就是第一個值)大,則插入在最前面}/*從大到小排序函式*/

void sort_slist(struct node *h)else

p=p->next;

}q=q->next;}}

/*主函式*/

void main()

執行結果:

建立並初始化,以-1為結束標誌,遍歷訪問連結串列1 2 3 5 4 6 -1

head->6->5->4->3->2->1->end輸入插入點結點的資料值x=7

在連結串列中插入結點

head->7->6->5->4->3->2->1->endpress any key to continue建立並初始化,以-1為結束標誌,遍歷訪問連結串列1 2 3 4 5 -1

head->5->4->3->2->1->end輸入插入點結點的資料值x=0

在連結串列中插入結點

head->5->4->3->2->1->0->endpress any key to continue建立並初始化,以-1為結束標誌,遍歷訪問連結串列1 2 3 4 -1

head->4->3->2->1->end輸入插入點結點的資料值x=2

在連結串列中插入結點

head->4->3->2->2->1->endpress any key to continue希望對你有所幫助!!

2樓:

#include

#include

#define count 5

typedef int elemtype;

typedef struct _lnodelnode, *linklist;

linklist createlist(elemtype *elemlist, int n)//elemlist遞增

return head;

}void printlist(linklist head)printf("\n");

}void insertelem(linklist head, elemtype x)//遞增表中插入

else

break;

}//head與p之間插入

q = (lnode*)malloc(sizeof(lnode));

q->data = x;

q->next = p;

head->next = q;

}void deletelist(linklist head)}void main()

;//保證序列遞增

linklist head = null;

elemtype x;

head = createlist(elemlist, count);

printf("列印連結串列:\n");

printlist(head);

printf("輸入插入元素:");

scanf("%d", &x);

insertelem(head, x);

printf("列印連結串列:\n");

printlist(head);

deletelist(head);}

建立一個單連結串列,並實現插入,刪除操作.

編寫一個完整的程式,實現單連結串列的建立、插入、刪除、輸出等基本操作。

3樓:匿名使用者

typedef int elemtype;

typedef int status;

#define overflow -2

#define ok 1

#define error -1

#include "stdio.h"

#include "stdlib.h"

typedef struct lnode *linklist;

//節點插入

}//遍歷輸出並輸出長度

printf("%d\n",p->data );

printf("長度為:%d\n",i);

return ok;

}//查詢值為x的直接前驅結點q並輸出

p=p->next ;

}if(p->next &&p->data ==x)

if(k==0)

printf("未找到值為%d的結點\n",&x);

printf("\n");

}//刪除節點

else

if(k==0)

printf("表中沒有值為%d的結點!\n",&x);

return ok;

}//連結串列逆置

k=p;

while (l->next !=p)

}//連結串列奇偶分解

p=p->next ;

}if(p->data %2==0)

}//主選單

void main()}}

資料結構中單連結串列的建立,插入和刪除。

4樓:扈懷煒

#include "stdio.h"

#include "stdlib.h"

#define ok 1

#define error 0

typedef int elemtype;

typedef int status;

typedef struct lnode lnode,*linklist;

//以下是建立單連結串列

printf("a list has been created successfully!\n");

}//以下是輸出單連結串列

void outputlist_l(linklist l)

printf("the list is:\n");

while (p )

printf("\n");

}//在第i個元素之前插入一個元素

status listinsert_l(linklist l, int i, elemtype e)

if(p==null)

if(i==j)

//請將該演算法補充完整

}// 刪除第 i 個元素

if(p==null)

if(i==j)

//請將該演算法補充完整

}int main()

else printf("the inserting position is error!please do again!\n");

}else if (choice==2)

else printf("the deleting position is error!please do again!\n");

}else if (choice==3)

else if(choice!=0)

printf("choice error\n");

}return 0;}

如何c語言建立單鏈表,如何C語言建立單鏈表

小甜甜愛亮亮 c語言建立單鏈表如下 include stdio.h include stdlib.h include malloc.h include iostream.h typedef struct node int data node next node list void create in...

單鏈表頭插法然後輸出的問題,單鏈表頭插法然後輸出的乙個問題

問題出在輸出鍊表部分!while q 因為q是頭結點,所以你第乙個要輸出q next data,但是你下面有一句q q next 假設你的q在執行q q next後指向鍊表尾結點,此時q仍為真,只是q next null,所以還會執行while迴圈,但你要輸出q next data,因為q next...

在單鏈表中的p所指結點之前插入s所指結點時,可執行如

墨汁諾 q head while q q next dao p 迴圈結束時q後面正好zhi是需要找的dp或者q為空表示鏈版錶中沒有權p if q q next表示結點中存放的指標,該指標用來指向某個結點。原來的連線關係是q next p,意思是q中存放的指標的值是p,即q指向p。 答案應該說不完整,...