C语言链表文件的数据操作综合

img

img

img


链表是一种动态数据结构,相较于数组而言,链表不需要预留空间,数据可以存储于内存的任何可用的位置,易于扩展。同时,相较于数组,链表增加和删除数据的效率较高,随机读取数据的效率较低。请完成本次实验,体会链表的这些特点。

第一题:

#include<stdio.h>
#include<stdlib.h>
#include<String.h>
typedef char ElemType;
typedef struct Link{
  ElemType str[50];
  struct Link *next;
}Link;
//初始化,创建头结点
Link *initList(Link *L)
{
    L = (Link *) malloc(sizeof(Link));//为头结点分配空间
    L->next = NULL;//头结点指针域置空
    return L;
}
//创建指定个数的单链表
Link *createList()
{
    int i;
    ElemType e[50];
    char s[50]="******";
    Link *L = initList(L), *r, *n;//分别定义头指针、尾指针、新指针
    r = L;//尾指针初始化为头指针
    for(;;)
    {
        n = (Link *) malloc(sizeof(Link));//申请空间
        scanf("%s",n->str);
        if(strcmp(n->str,s)==0){break;}
        n->next = NULL;//新指针指针域置空
        r->next = n;//将新指针链入单链表末尾
        r = r->next;//尾指针往后移

    }
    return L;
}

void seachLinkLong(Link *L,ElemType e[50])
{
    Link *r = L->next;
   for(;r!=NULL;)
    {
        if(strlen(r->str)>strlen(e)) 
        {
             strcpy(e,r->str);
        }
        r = r->next;//尾指针后移
        
    }
}

int main(){
    Link*L;
    ElemType e[50];
    L = createList();
    seachLinkLong(L,e);
    printf("%s",e);
    return 0;
}

第二题运行截图:

img

需要代码

所以这是有人写了吗