结构体与链表 2018年12月13日
以下内容仅供娱乐,欢迎随时探讨,请多指教!
有如下的结构体:
typedef struct link_list
{
int num;
char sex[20];
char name[30];
struct link_list *next;
}STU,*linklist;
利用此结构体设计单链表,并在单链表上完成如下操作:
(1) 创建链表。
(2) 输出链表。
(3) 链表查找。
(4) 链表插入。
(5) 链表删除。
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
//结构体
typedef struct link_list {
int num;
char sex[20];
char name[30];
struct link_list *next;
} STU,*linklist;
//创建链表函数
linklist createlist()
{
int x;
linklist head=NULL,p,q=NULL;//一定要初始化
printf("请输入学号(负数结束)\n");
scanf("%d",&x);
while(x>0) {
p=(linklist)malloc(sizeof(STU));
p->num=x;
printf("请输入性别和姓名\n");
scanf("%s%s",p->sex,p->name);
if(head == NULL)head=p;
else q->next=p;
q=p;
printf("请输入学号(负数结束)\n");
scanf("%d",&x);
}
if(q)q->next=NULL;
return head;
}
//输出链表函数
void ouput(linklist head)
{
while(head) {
printf("%d\t%s\t%s\n",head->num,head->sex,head->name);
head=head->next;
}
}
//找学号函数
linklist find_num(linklist head,int num)
{
while(head && head