这段代码没有主函数,如果想要实现的话 将其放在 .h 文件中调用就可以了;如果闲麻烦的话可以直接在这段代码后面加一个主函数,试着调用各个函数,观其功能。
对链表的操作函数:
void creat(); //创建链表
bool insert(); //插入链表void search(); //查询链表
bool del(); //删除链表
void output(); //输出链表
void sort(); //对链表进行排序
bool is_empty(); //判断链表是否为空
int length(); //返回链表的长度
实现代码:
#include <cstdio>
#include <malloc.h>
typedef struct Stu
{
int num;
int a;
struct Stu *Next;
}Stu , * pStu;
pStu head;
void creat() //创建
{
printf("输入0,停止输入 \n");
pStu p , q;
p = (pStu)malloc(sizeof(Stu));
head = p;
head->Next = NULL;
q = (pStu)malloc(sizeof(Stu));
printf("请输入第1个链表的内容:");
q->num = 1;
scanf("%d",&q->a);
int n=2;
while(q->a)
{
p->Next = q;
p = q;
q = (pStu)malloc(sizeof(Stu));
printf("请输入第%d个链表的内容:",n);
q->num = n++;
scanf("%d",&q->a);
}
p->Next = NULL;
}
void output() //输出
{
pStu p;
p = head->Next;
while(NULL != p)
{
printf("第%d个链节的内容是%d。\n",p->num,p->a);
p = p->Next;
}
}
int length() //求长度
{
int cnt = 0;
pStu p;
p = head->Next;
while(NULL != p)
{
p = p->Next;
cnt++;
}
return cnt;
}
bool is_empty() //判断是否为空
{
if( NULL == head->Next )
return true;
else
return false;
}
bool insert() //插入
{
int n , m;
printf("请输入你要在第几个位置插入新的链节:");
scanf("%d",&n);
printf("请输入在这个链节上的内容:");
scanf("%d",&m);
if( n > length() )
return false;
if( is_empty() )
return false;
pStu p , q;
p = head;
q = (pStu)malloc(sizeof(Stu));
q->num = n;
q->a = m;
while(NULL != p->Next && p->Next->num<n )
p = p->Next;
q->Next = p->Next;
p->Next = q;
p = q;
while(NULL != p->Next)
{
p->Next->num++;
p = p->Next;
}
return true;
}
void search() //查找
{
int m;
pStu p ;
p = head;
printf("请输入你要查找的序号:");
scanf("%d",&m);
while(NULL != p->Next && p->Next->num != m+1 )
p = p->Next;
printf("第%d个链节的内容是%d。\n",p->num,p->a);
}
bool del() //删除
{
int m;
pStu p , q;
p = head;
printf("请输入你要删除的序号:");
scanf("%d",&m);
if( m > length() || m < 0 )
return false;
while(NULL != p->Next && p->Next->num != m )
p = p->Next;
q = p->Next;
p->Next = p->Next->Next;
free(q);
while(NULL != p->Next)
{
p->Next->num--;
p = p->Next;
}
return true;
}
void sort() //排序
{
pStu p , q;
int temp;
p = head;
for( p ; NULL != p->Next ; p = p->Next )
{
for( q = p->Next ; NULL != q->Next ; q = q->Next)
{
if( p->Next->a > q->Next->a )
{
temp = p->Next->a;
p->Next->a = q->Next->a;
q->Next->a = temp;
}
}
}
}
这样其他的功能就都能简单的写出来了。