1 条题解

  • 0
    @ 2025-4-12 21:43:14

    C :

    ///*数据元素类型ElemType取整型int。
    //按照顺序存储结构实现如下算法(各算法边界条件和返回结果适当给出):
    //创建任意整数线性表(即线性表的元素值随机在键盘上输入),长度限定在20之内;
    //打印(遍历)该线性表(依次打印出表中元素值);
    //在线性表中查找第i个元素,并返回其值;
    //在线性表中第i个元素之前插入一已知元素;
    //在线性表中删除第i个元素;
    //求线性表中所有元素值(整数)之和;*/
    //#include<stdio.h>
    //#define MAXSIZE 10
    //typedef struct        //线性表结构定义
    //{
    //	char elem[MAXSIZE];
    //	int last;
    //}SeqList;
    //
    //void Print(SeqList L)   //打印
    //{
    //	int i;
    //	for(i=0;i<MAXSIZE;i++)
    //	{
    //		printf("%d  ",L.elem[i]);
    //	}
    //}
    //
    //void Print1(SeqList L)   //打印
    //{
    //	int i;
    //	for(i=0;i<L.last;i=i+2)
    //	{
    //		printf("%c  ",L.elem[i]);
    //	}
    //}
    //
    //int GetData(SeqList L,int i)    //查找
    //{
    //	if(i<=MAXSIZE)
    //		return(L.elem[i-1]);
    //	else
    //		return(0);
    //}
    //
    //int InsList(SeqList *L,int i,int e)    //插入
    //{ 
    //	int k;
    //	if ((i<1)||(i>L->last))
    //	{
    //		printf("插入位置不合法");
    //		return 0;
    //	}
    //	if(L->last>MAXSIZE)
    //	{
    //		printf("表已满,无法插入");
    //		return 0;
    //	}
    //	for(k=L->last;k>=i-1;k--)
    //		L->elem[k+1]=L->elem[k];
    //	L->elem[i-1]=e;
    //	L->last++;
    //	return 1;
    //}
    //
    //
    //int DelList(SeqList *L,int i,int *e)  //删除
    //{
    //	int k;
    //	if((i<1)||(i>L->last+1))
    //	{
    //		printf("删除位置不合法");
    //		return 0;
    //	}
    //	*e=L->elem[i-1];
    //	for(k=i;i<=L->last;k++)
    //		L->elem[k-1]=L->elem[k];
    //	L->last--;
    //	return 1;
    //}
    //
    //
    //int sum(SeqList L)   //求和
    //{
    //	int i,sum=0;
    //	for(i=0;i<MAXSIZE;i++)
    //	{
    //		sum=sum+L.elem[i];
    //	}
    //	return(sum);
    //}
    //
    //
    //
    //
    //
    ///////////////////////////////////////////
    //int main()
    //{
    //	int i=0,e;
    //	SeqList L;
    //	L.last=0;
    //	//for(i=0;i<MAXSIZE;i++)
    //	//{
    //	//	L.elem[i]=0;
    //	//}
    //	i=0;
    //	int n;
    //	scanf("%d",&n);
    //	gets(L.elem);
    //	/*printf("请输入线性表\n");*/
    //	//while(i<n)
    //	//{
    //	//	scanf("%c",&(L.elem[i]));
    //	//	//gets(L.elem);
    //	//	i++;
    //	//	L.last++;
    //	//}
    //	Print(L);
    //	Print1(L);
    //
    //
    //
    //	//printf("查找第i个元素,请输入i的值\n");
    //	//scanf("%d",&i);
    //	//if(i>MAXSIZE)
    //	//	printf("输入i值有误");
    //	//else
    //	//	printf("%d",GetData(L,i));
    //	//printf("在第i个元素之前插入元素e,请输入i和e的值");
    //	//scanf("%d%d",&i,&e);
    //	//InsList(&L,i,e);
    //	//Print(L);
    //
    //	//printf("删除第i个元素,请输入i值");
    //	//scanf("%d",&i);
    //	//DelList(&L,i,&e);
    //	//Print(L);
    //	//printf("删除的元素是%d",e);
    //
    //	//printf("线性表中所有元素值(整数)之和为%d",sum(L));
    //
    //
    //
    //	return 0;
    //}
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    #define OK   1
    #define ERROR  0
    #define TRUE 1
    #define FALSE 0
    
    
    
    typedef char ElemType;
    typedef struct Node    /*结点类型定义*/ 
    { 
    	ElemType data;
    	struct Node  * next;
    }Node, *LinkList;  /* LinkList为结构指针类型*/
    
    void init_linklist(LinkList *l)/*对单链表进行初始化*/
    {
    	*l=(LinkList)malloc(sizeof(Node)); 
    	(*l)->next=NULL;
    }
    
    void CreateFromTail(LinkList L)
    { 
    	Node *r, *s;
    	char c;
    	int   flag =1; /*设置一个标志,初值为1,当输入"$"时,flag为0,建表结束*/
    	r=L;                /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
    	while(flag)         /*循环输入表中元素值,将建立新结点s插入表尾*/
    	{
    		scanf("%d",&c);
    		if(c != -1)
    		{
    			s=(Node*)malloc(sizeof(Node));
    			s->data=c;
    			r->next=s;
    			r=s;
    		}
    		else
    		{
    			flag=0;
    			r->next=NULL;   /*将最后一个结点的next链域置为空,表示链表的结束*/
    		}
    	}   
    } 
    
    void creatList(LinkList L,char ch[],int n)
    {
    	Node *pre,*s;
    	
    	pre =L;
    	//gets(ch);
    	for (int i=0;i<n;i++)
    	{
    		
    		s=(Node*)malloc(sizeof(Node));   /*申请一个新的结点S */
    		s->data=ch[i];                       /*值e置入s的数据域*/
    		//s->next=pre->next;				/*修改指针,完成插入操作*/
    		pre->next=s;
    		pre = s;
    	}
    	pre->next=NULL;
    }
    int InsList(LinkList L,int i,ElemType e)
    	/*在带头结点的单链表L中第i个位置插入值为e的新结点s*/
    {  
    	Node *pre,*s;
    	int k;
    	pre=L;  
    	k=0;                     /*从"头"开始,查找第i-1个结点*/
    	while(pre!=NULL&&k<i-1)  /*表未查完且未查到第i-1个时重复,找到pre指向第i-1个*/ 
    	{ 
    		pre=pre->next;
    		k=k+1; 
    	}									/*查找第i-1结点*/
    	if(!pre)      /*如当前位置pre为空表已找完还未数到第i个,说明插入位置不合理*/ 
    	{ 
    		printf("插入位置不合理!");
    		return ERROR;
    	}
    	s=(Node*)malloc(sizeof(Node));   /*申请一个新的结点S */
    	s->data=e;                       /*值e置入s的数据域*/
    	s->next=pre->next;				/*修改指针,完成插入操作*/
    	pre->next=s;
    	return OK;
    }
    
    int main()
    {
    	LinkList l;
    	Node *p;
    	int flag=0;
    	int i;
    	char c;
    	init_linklist(&l);		
    	//printf("请输入链表数据,以$结束!\n");
    	//CreateFromTail(l);
    	/*p = l->next;
    	while(p!=NULL)
    	{
    		printf("%c\n",p->data);
    		p=p->next;
    	}*/
    	//printf("请输入插入的位置和元素:\n");
    	int n;
    	
    	scanf("%d",&n);
    	char ch[20];
    	scanf("%s",ch);
    	creatList(l,ch,n);
    	/*for (i=1;i<=n;i++)
    	{
    	scanf("%c",&c);
    	InsList(l,i,c);
    	}*/
    	/*scanf("%d,%c",&i,&c);
    	flag=InsList(l, i, c);*/
    	/*if(flag)
    		printf("插入操作成功!\n");
    	else
    		printf("插入操作失败!\n");*/
    	p = l->next;
    	for (int i=1;i<=n,p;i++)
    	{
    		printf("%c",p->data);
    		p=p->next;
    		if (p)
    		{
    			p=p->next;
    		}
    	}
    	return 1;
    }
    
    

    C++ :

    #include<malloc.h>
    #include<iostream>
    using namespace std;
    
    typedef struct Node
    {
    	char data;
    	struct Node *next;
    }Node, *Linklist;
    
    void InitList(Linklist *L)
    {
    	*L =(Linklist)malloc(sizeof(Node));
    	(*L)->next = NULL;
    }
    	
    void Create_rear(Linklist L,int n)
    {
    	Node *s,*r;
    	char c;
    	bool flag =true;
    	r=L;
    	for(int i=0;i<n;i++)
    	{
    		cin>>c;
    		if(i!=n)
    		{
    			s=(Node*)malloc(sizeof(Node));
    			s->data = c;
    			r->next = s;
    			r = s;
    		}
    		else
    		{
    			flag=0;
    			r->next=NULL;
    		}
    	}
    	return;
    }
    	
    
    
    void Out_Put(Linklist L,int n)
    {
    	Node *p;
    	p=L;
    	bool flag=true;
    	for(int i=0;i<n;i++)
    	{
    		p=p->next;
    		if(flag)
    		{
    			cout<<p->data;
    			flag=false;
    		}
    		else
    			flag=true;
    	}
    
    }
    
    int main()
    {
    	Linklist L;
    	int n;
    	cin>>n;
    	InitList(&L);
    	Create_rear(L,n);
    	Out_Put(L,n);
    	return 0;
    }
    
    • 1

    信息

    ID
    1376
    时间
    10000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者