1 条题解
-
0
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
- 上传者