对链表的操作

    xiaoxiao2025-09-04  420

    这段代码没有主函数,如果想要实现的话    将其放在 .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; } } } }

    这样其他的功能就都能简单的写出来了。

    转载请注明原文地址: https://ju.6miu.com/read-1302296.html
    最新回复(0)