电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

如何创建一个单链表

如何创建一个单链表_第1页
1/12
如何创建一个单链表_第2页
2/12
如何创建一个单链表_第3页
3/12
①.如何创建一个单链表? 链表节点的定义: typedef struct node { int data; //节点内容 node *next; //下一个节点 }node; 单链表的创建: 1 //创建单链表 2 node *create() 3 { 4 int i = 0; //链表中数据的个数 5 node *head, *p, *q; 6 int x = 0; 7 head = (node *)malloc(sizeof(node)); //创建头节点 8 9 while(1) 10 { 11 printf("Please input the data: "); 12 scanf("%d", &x); 13 if (x == 0) //data 为 0 时创建结束 14 break; 15 p = (node *)malloc(sizeof(node)); 16 p->data = x; 17 if (++i == 1) 18 { //链表只有一个元素 19 head->next = p; //连接到 head 的后面 20 } 21 else 22 { 23 q->next = p; //连接到链表尾端 24 } 25 q = p; //q 指向末节点 26 } 27 q->next = NULL; //链表的最后一个指针为NULL 28 return head; 29 } 上面的代码中,使用while 循环每次从终端读入一个整型数据,并调用malloc 动态分配链表节点内存存储这个整型数据,然后再插入到单链表的末尾。最后当数据为0 时表示插入数据结束,此时把末尾节点的next 指针置为NULL。 ②.查找单链表中间元素? 解析: 这里使用一个只用一遍扫描的方法。描述如下: 假设 mid 指向当前已经扫描的子链表的中间元素,cur 指向当前以扫描链表的尾节点,那么继续扫描即移动cur 到cur->next,这时只需判断一下应不应移动mid 到mid->next 就行了。所以一遍扫描就能找到中间位置。代码如下: 1 node *search(node *head) 2 { 3 int i = 0; 4 int j = 0; 5 node *current = NULL; 6 node *middle = NULL; 7 8 current = middle = head->next; 9 while(current != NULL) 10 { 11 if( i / 2 > j) 12 { 13 j++; 14 middle = middle->next; 15 } 16 i++; 17 current = current->next; 18 } 19 20 return middle; 21 } ③.打印单向链表? 解析: 单链表的打印: 1 //打印单链表 2 void print(node *head) 3 { 4 node *p; 5 int index = 0; 6 if (head->next == NULL) //链表为空 7 { 8 printf("Link is empty!\n"); 9 return; 10 } 11 p = head->next; 12 while(p != NULL) //遍历链表 13 { 14 printf("The...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

如何创建一个单链表

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部