标签:总结 node head stu int 第三周 next sj
一:链表的创建与输出(c++)
输入n个学生及其姓名与年龄
#include <iostream>
using namespace std;
typedef struct student
{
char name[10];
int age;
struct student *next;
}stu;
//创建链表
stu *createlist(int n)
{
stu *head = new stu;//定义头节点并分配空间
//创建一个新节点来记录上一个节点的next;
stu *pre = head;
for (int i = 0; i < n; i++)
{
stu* node = new stu;//创立一个新节点node分配空间
printf("输入第%d个学生的姓名和学号 : \n", i + 1);
cin >> node->name;
cin >> node->age;
pre->next = node;//将下个节点的next赋值为node的地址
node->next = NULL;
pre = node;//记录此节点方便下次的pre->next
}
return head;
}
//输出链表函数
void print(stu*head)
{
stu*node = head->next;//头节点的指针
while (node != NULL)
{
cout << node->name << " " << node->age << " " << endl;
node = node->next;//换到下一个节点
}
}
int main()
{
int n;
cin >> n;
stu *head1 = createlist(n);
print(head1);
}
自我认为啊,c++在链表创建这一块简单一点,毕竟开辟空间输入new,而c则要malloc,字符都少些。(不喜勿喷)
二:链表的排大小:
输入t个数 排序(从小到大)排
输入样例:
5
1 8 4 9 3
输出样例:
1->3->4->8->9
看了一后二就不写太多解释了
#include <iostream>
using namespace std;
typedef struct shuju
{
int s;
struct shuju *next;
}sj;
int main()
{
int a = 0,t;
cin >> t;
sj*head = new sj;
sj*pre = new sj;
pre = head;
sj*p; //必须用sj而不是int
sj*q; //必须用sj而不是int
while (t--)
{
sj*node = new sj;
cin >> node->s;
if (node->s == NULL) break;
pre->next = node;
node->next = NULL;
pre = node;
}
//冒泡排序
//核心
for (p = head->next; p != NULL; p = p->next)
{
for (q = p->next; q != NULL; q = q->next)
{
if (p->s > q->s)
{
t = p->s;
p->s = q->s;
q->s = t;
}
}
}
//核心
sj*node1 = head->next;
while (node1 != NULL)
{
if (a != 0) cout << "->";
cout << node1->s;
a++;
node1 = node1->next;
}
}
第三周总结
第三周写题不在状态,c++与c有些混淆,c++中函数记不太清
标签:总结,node,head,stu,int,第三周,next,sj 来源: https://blog.csdn.net/weixin_62995761/article/details/122003728
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。