数据结构中的单链表上机代码

数据结构是那种离开书就不会写代码的情况,求大佬教方法如何解决这种情况

#include<stdio.h>
#include<stdlib.h>

typedef int DataType;
typedef struct node{
DataType data;
struct node *link;
}LinkNode,*LinkList;
void printList(LinkNode*first){
if(first==NULL) return;
printf("%d\n",first->data);
printList(first->link);
} ;
//用尾插法插入单链表
void creatListRear(LinkList&last,DataType endTag){
DataType val;
printf("请输入结点元素:");
scanf("%d",&val);
if(val==endTag){
last = NULL;
}else{
last=(LinkNode*)malloc(sizeof(LinkList));//创建新结点
if(!last){
printf("储存分配错误!\n"); exit(1);
}
last->data=val;

creatListRear(last->link,endTag);//递归创建后续链表
}
}
//长度
int Length(LinkList&first){
LinkNode*p=first->link;
}
//输入一个元素X查找序号
LinkNode*Search1(LinkList &first,DataType x){
LinkNode *p = first->link;
int c=1;
while(p!=NULL&&p->data!=x){
p=p->link;
c++;
}
printf("对应的逻辑序号为:%d\n",c);
}
//输入一个序号查找元素X
LinkNode*Search2(LinkList &first,DataType i){
LinkNode*p=first->link;
int b=1;
while(p!=NULL&b<i){
p=p->link;
b++;
}
printf("对应的data值为:%d\n",p->data);
}


main(){
int i;
int x;
LinkList L; DataType endTag;
printf("请输入约定结点为:");
scanf("%d",&endTag); //输入约定的结束标志
L=(LinkNode*) malloc (sizeof (LinkList));
if(!L){
printf("存储分配错误!\n");
exit(1);
}
LinkNode *rear=L;
creatListRear(rear->link,endTag);
printList(L->link);
Length(L);
printf("请任意输入一个数值x:");
scanf("%d",&x);
Search1(L,x);
printf("请任意输入一个序号:");
scanf("%d",&i);
Search2(L,i);
}

posted @ 2019-04-17 23:14  吕志琪  阅读(135)  评论(0编辑  收藏  举报