#include <iostream>
using namespace std;
typedef struct node
{
char data;
struct node *next;
}link;
link * get(link *l, int i)
{
link *p;int j=0;
p=l;
while((j<i) && (p->next!=NULL))
{p=p->next;j++;}
if(j==i)
return p;
else
return NULL;
}
link * ins (link *l, char ch,int i)
{ link *p,*s;
p=get(l,i-1);
if(p==NULL)
cout<<"输入有误"<<endl;
else
{
s=(link *)malloc(sizeof(link));
s->data=ch;
s->next=p->next;
p->next=s;
}
return l;
}
link * find(link *l, char ch)
{
link *p; int i=0; int j=0;
p=l;
while(p!=NULL)
{ i++;
if(p->data!=ch)
p=p->next;
else {cout<<"您查找的数据在第"<<i-1<<"个位置."<<endl;
j=1;p=p->next;
}
}
if(j!=1)
cout<<"您查找的数据不在线性表中."<<endl;
return l;
}
link * del(link *l, int i)
{
link *p,*s;
p=get(l,i-1);
if(p==NULL)
cout<<"输入有误"<<endl;
else
{
s=p->next;
p->next=s->next;
free(s);
}
return l;
}
link * add(link *l )
{
link *p,*s;
cout<<"请输入一串单字符数据,以*结束!"<<endl;
char ch;
link *HEAD;
link *R,*P,*L;
HEAD=(link *)malloc(sizeof(link));
HEAD->next=NULL;
R=HEAD;
getchar();
ch=getchar();
while(ch!='*')
{
P=(link *)malloc(sizeof(link));
P->data=ch;P->next=NULL;
R->next=P;R=R->next;
getchar();
ch=getchar();
}
L=HEAD;
cout<<"当前输入的线性表为:"<<endl;
P=L;P=P->next;
if(L!=NULL)
do
{cout<<P->data<<" ";
P=P->next;
}while(P!=NULL);
cout<<endl;
p=l;
while(p->next!=NULL)
p=p->next;
s=L;
p->next=s->next;
p=l;
return l;
}
link * print(link *l)
{ int i,k;
char ch;
link *p,*q;
cout<<"当前线性表为:"<<endl;
p=l;p=p->next;
if(l!=NULL)
do
{cout<<p->data<<" ";
p=p->next;
}while(p!=NULL);
cout<<endl;
cout<<"请选择您要的操作:";
cout<<" 1、插入";
cout<<" 2、查找";
cout<<" 3、删除";
cout<<" 4、合并";
cout<<" 0、退出";
cout<<endl;
cin>>k;
if(k==1)
{
cout<<"请输入您要插入的数据值:";
cin>>ch;
cout<<"请输入您要插入的位置:";
cin>>i;
p=ins(l,ch,i);
q=print(l);
}
else if(k==2)
{
cout<<"请输入您要查找的数据值:";
cin>>ch;
p=find(l,ch);
q=print(l);
}
else if(k==3)
{
cout<<"请输入您要删除的数据的位置:";
cin>>i;
p=del(l,i);
q=print(l);
}
else if(k==4)
{ p=add(l);
q=print(l);
}
else if(k==0)
;
else
{cout<<"输入错误!"<<endl;
q=print(l);}
return l;
}
int main()
{
cout<<"请输入一串单字符数据,以*结束!"<<endl;
char ch;
//link *head;
link *r,*p,*q,*l;
l=(link *)malloc(sizeof(link));
l->next=NULL;
r=l;
ch=getchar();
// getchar();
while(ch!='*')
{
p=(link *)malloc(sizeof(link));
p->data=ch;p->next=NULL;
r->next=p;r=r->next;
ch=getchar();
// getchar();
}
//l=head;
q=print(l);
return 0;
}
c语言的
#include <stdio.h>
#include <malloc.h>
#define N 8
typedef struct node
{int data;
struct node *next;
}node;
node * createsl()
{
node *p,*s,*h;
int j=1,x;
p=s=h=(node*)malloc(sizeof(node));
h->next=NULL;
printf("please input the data to create the list,end with -1 or %d nupmbers\n",N);
while(x!=-1&&j<=N)
{
printf("number %d:",j);
scanf("%d",&x);
s=(node*)malloc(sizeof(node));
s->data=x;
if(h->next==NULL)
h->next=s;
else
p->next=s;
p=s;
j++;
}
p->next=NULL;
return h;
}
int access(node *h,int i)
{
node *p;int j=1;
p=h->next;
while(p!=NULL)
{
if(p->data==i)
break;
p=p->next;
j++;
}
if(p!=NULL)
{
printf("find the number in position:%d\n",j);
return(p->data);
}
else
{
printf("can't find the number in the list!\n");
return -1;
}
}
void insertsl(node *h,int i)
{
node *p,*t;
int j=1;
p=h->next;;
while(p->next!=NULL)
{
p=p->next;
j++;
}
t=(node*)malloc(sizeof(node));
t->data=i;
t->next=p->next;
p->next=t;
printf("insert success in position %d\n",j+1);
}
void deletesl(node *h,int i)
{
node *p,*s,*q;
int j=1;
p=h;
while(p->next!=NULL)
{
q=p->next;
if(q->data==i)
break;
p=p->next;
j++;
}
if(p->next==NULL)
{
printf("Can't find the number you want to delete.\n");
return;
}
else
{
s=p->next;
p->next=s->next;
free(s);
printf("delete success in position %d\n",j+1);
}
}
void print(node *h)
{
printf("\nprint all the data in the list:") ;
node *s;
s=h->next;
if(s!=NULL)
{
while(s!=NULL)
{
printf(" %d ",s->data) ;
s=s->next;
}
}
else
printf("the list is empty!%d");
printf("\n");
}
int main()
{
node *p;
int a;
p=createsl() ;
printf("\nyou need find the number:\n");
scanf("%d",&a);
access(p,a);
printf("\nplease input the number you want to insert:\n");
scanf("%d",&a);
insertsl(p,a);
printf("\nplease input the number you want to delete:\n");
scanf("%d",&a);
deletesl(p,a);
print(p);
return 0;
}
温馨提示:内容为网友见解,仅供参考
c数据结构 实现单链表的创建、插入、删除、打印和查询
cout<<"您查找的数据不在线性表中."<<endl;return l;} link * del(link *l, int i){ link *p,*s;p=get(l,i-1);if(p==NULL)cout<<"输入有误"<<endl;else { s=p->next;p->next=s->next;free(s);} return l;} link * add(link *l ){ link *p,*s;cout<<"请输入一...
C语言实现单链表的建立、输入、插入、删除、查找元素并返回位置_百度知 ...
时间:2010年8月28日17:19:49 功能:C语言实现单链表的建立、输入、插入、删除、查找元素并返回位置 \/ include"stdio.h"include"stdlib.h"include"malloc.h"\/*假设输入的数据为3个--我比较好操作-_-*\/ define size 3 typedef struct List { int num;int shuju;struct List *next;}list;\/*...
【数据结构】C\/C++ 单链表的 创建、初始化、增、删、改、查、遍历等基 ...
C\/C++单链表的基本操作包括创建、初始化、增删改查和遍历等。首先,定义链表结构,包括数据域和指向下一个节点的指针。头插法建立链表函数Creat_LinkList()的工作流程是:动态分配链表节点,输入用户数据,通过循环将节点依次插入到链表头部,直到用户输入0为止。尾插法的创建函数Creat_LinkList_R()则是...
数据结构作业~急求~~~用c语言或c++ 使用单链表实现系统进程列表,完成...
1、数据域:用来存储本身数据 2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。例:typedef strUCt node { char name[20];struct node *link;}stud;这样就定义了一个单链表的结构,其中char name[20]是一个用来存储姓名的字符型数组,指针*link是一个用来存储其直接后继...
c语言数据结构单链表的初始化 插入 销毁 元素的取出 删除 操作 求详细C...
\/\/链表建立 Node* creat(){ Node *head = NULL, *p = NULL, *s = NULL;int Date = 0, cycle = 1;head = (Node*)malloc(sizeof(Node));if(NULL == head){ printf("分配内存失败\\r\\n");return NULL;} head->pstnext = NULL;p = head;while(cycle){ printf("请输入数据且当...
1、编程实现单链表的建立、插入、删除和查找算法,语言采用C或JAVA等...
void hhead_creat()\/*用头插法建立带头结点的单链表*\/ {int x;linklist *p;head=(struct node*)malloc(LEN);head->data=-999;head->next=NULL;printf("\\n\\n\\t\\t请随机输入一组正整数以0作为结束符:\\n\\n\\t\\t");scanf("%d",&x);while(x!=0){ p=(struct node*)malloc(LEN);p...
数据结构C语言单链表的创建,插入删除和合并程序代码
int isprime(int n){ int i,t;if(n==2)return 1;if(n%2==0 || n<2)return 0;for(i=3,t=(int)sqrt(n);i<=t;i+=2){ if(n%i==0)return 0;} return 1;} void main(){ int i,a,n;i=0;do { printf("Input an integer (>=1):");scanf("%d",&a);if(a>=1)...
用C语言实现数据结构中常用算法,如对链表的操作、查找、排序等。
cout<<"链表已经删除\\n";return 1;} \/\/\/ \/\/\/ \/\/ \/*插入结点*\/\/\/ \/\/\/ int listinsert(link &L,int i,ElemType e){ link p,q;int j;p=L;j=0;while(p&&jnext;++j;} q= (link)malloc(sizeof(LNode));q->date=e;q->next=p->next;p->next=q; cout<<"链表已经插入\\n...
数据结构 单链表 创建 打印 删除 插入 查询 实验报告
1.c++编的 include <iostream> using namespace std;typedef struct node { char data;struct node *next;}link;link * get(link *l, int i){ link *p;int j=0;p=l;while((jnext!=NULL)){p=p->next;j++;} if(j==i)return p;else return NULL;} link * ins (link *l, char...
你好,数据结构(C语言)中实现有序链表的插入,删除结点基本操作,及两个有...
void creat(); \/\/建立单向动态链表。此函数带回一个指向链表头的指针,用于参赛选手的录入void del(); \/\/用于删除结点,用于参赛选手的删除void search(); \/\/参赛选手成绩的查询void print(); \/\/用于输出链表void rank(); \/\/按个人平均成绩从高到低的顺序进行排序void update(); \/\/参赛选手的修改void menu...