无表头单链表的总结----如何将已经初始化的结构体数组加入链表关系

 1 struct Student
 2 {
 3     char ID[N_ID];
 4     char name[N_name];
 5     struct Student *next;
 6 }alist[LEN_A],blist[LEN_B];
 7 ////以上是结构体
 8 //初始化
 9 struct Student alist[LEN_A] = { {"101","Wang"} ,{"102","Li"},{"105","Zhang"},{"105","Wei"} };
10 struct Student blist[LEN_B] =
11 { { "101","Zhang" } ,{ "104","Ma" },{ "105","Chen" },{ "107","Guo" },{ "108","liu" } };
12
13 //接下来对初始化结构加入链表关系
14 #include"head.h"
15 void print(struct Student *p,int sum)   //sum是数组的长度,p是数组的头指针
16 {
17     int i;
18     struct Student *head=p;
19     for (i=1; i <= sum; i++)
20     {
21         if (i < sum)
22             p->next = head + i;//关键,使得结构体成员的next指向下一个成员
23         else
24             p->next = NULL;//使得链表最后加入终止符号null
25         printf("%s %s\n", p->ID, p->name);
26         if (i < sum)
27             p = p->next;//链表指针移动
28     }
29 }
时间: 2024-11-08 19:07:03

无表头单链表的总结----如何将已经初始化的结构体数组加入链表关系的相关文章

无表头单链表的总结----增加节点(原链表为有序的链表)

1 #include"head.h" 2 struct Student* insert(struct Student*head, struct Student*addinfo) 3 { 4 struct Student *p0, *p1, *p2; //开辟三个结构体指针 5 p2=p1 = head; //头指针赋给p1,p2 6 p0 = addinfo; //把 增加信息的指针赋给p0,习惯不用原来指针 7 if (head == NULL) 8 { 9 head = p0 //

无表头单链表的总结----动态建立链表

1 #include "head.h" 2 struct Student *creat() 3 { 4 struct Student *head, *p1, *p2;// 先开辟三个结构体指针,*head,(作为返回的头指针) 5 p1 = p2 =(struct Student *) malloc(LEN); 6 scanf_s("%s %f", p1->num, N, &p1->score);//先读取输入的信息,据读入的信息进行判断 7 h

c语言实现线性结构(数组与链表)

由于这两天看了数据结构,所以又把大学所学的c语言和指针"挂"起来了. 我是小菜鸟,我为自己代言.下面是我这两天学习的成果(数组和链表的实现,用的是c语言哦!哈哈). (一)数组的实现和操作.代码如下: #include <stdio.h> #include <malloc.h> #include <stdlib.h> struct Array{ int length;//数组长度 int * pBase;//存放数组首元素的地址 int cnt;//

无表头单链表的总结----两个链表合并

#include"head.h" struct Student* insert(struct Student*ahead, struct Student*bhead) { struct Student *pa1, *pa2, *pb1, *pb2; pa1 = pa2 = ahead; pb1 = pb2 = bhead; if ((ahead != NULL)&&(bhead != NULL)) { do { while ((pb1->num > pa1-

无表头单链表的总结----输出链表

#include"head.h" void print(struct Student* head) { struct Student *p; printf("There are %d records:\n", sum); p = head; if (p != NULL) { do { printf("%ld %d\n", p->num, p->score); p = p->next; } while (p != NULL); /

无表头单链表的总结----删除节点

1 #include "head.h" 2 struct Student*del(struct Student*head,char num[N]) 3 { 4 struct Student*p1, *p2; 5 if (head == NULL) //若链表为空,则无需处理 6 { 7 printf("\nlist NULL!\n"); 8 return (head); 9 } 10 p2 = p1 = head; 11 while (strcmp(num, p1-

无表头单链表的总结----从链表中删除某一个年纪的的节点

1 #include "head.h" 2 struct Student *del_same_age(struct Student*head, int age) 3 { 4 struct Student *p, *pt; int find = 0; 5 p = pt = head; 6 while (p != NULL)//当循环到最后一个节点时 7 { 8 9 if (p->stu_age == age)//如果相等 10 { 11 find++; //说明找到了 12 if

无表头单链表的总结----无限删除和无限插入(在主函数里实现)

1 #include"head.h" 2 int main() 3 { 4 struct Student *head; 5 struct Student *addinfo; 6 printf("请输入信息(101 wang f s 501)(以"0 0 0 s 0"作为结束标志):\n"); 7 head = input(); 8 print(head); 9 char del_num[N]; 10 printf("请输入要删除的号码(

【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(一)

先扯几句闲话 往往非科班出身的编程爱好者,以C作为入门语言时,往往会问:“我学了这个XX,能做些什么?” 其实,配合Google,基本上啥都能做了. 你甚至连链表都不需要,就可以写一个贪食蛇小游戏 :) 本系列将分4个部分,让任何一个仅仅会二维数组合结构体的初学者写出自己的贪食蛇 进入正题.我们先分析一下问题,确定下四个部分. 0.分析游戏的本质以及在控制台中的表现形式 1.分析贪食蛇游戏的基本结构 2.确定实现方案 3.全部源代码 一.游戏,或者视频游戏的本质是什么? 0.游戏的本质是程序 对