单链表的建立及插入删除操作 c语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单链表的基本操作
#include
#include
typedef char date;
typedef struct node
{
date ch;
struct node *next;
}list;
typedef list *linklist;
linklist creat()
{
date ch;
linklist head=(linklist)malloc(sizeof(list));
list *p,*r;
r=head;
ch=getchar();
while(ch!='\n')
{
p=(linklist)malloc(sizeof(list));
p->ch=ch;
r->next=p;
r=p;
ch=getchar();
}
r->next=NULL;
return (head);
}
void insert(linklist head,int i,char x)
{
int j=0;
linklist r,p;
p=head->next;
while(p&&j { p=p->next; j++; } if(!p||j>i-1) exit(1); r=(linklist)malloc(sizeof(list)); r->ch=x; r->next=p->next; p->next=r; } void puter(linklist linker) { linklist p; p=linker->next; while(p!=NULL) { printf("%c ",p->ch); p=p->next; } } void delet(linklist head ,int i) { int j=0; linklist r,p; p=head->next; while(p&&j { p=p->next; j++; } if(!p||j>i-1) exit(1); r=p->next; p->next=r->next; free(r); } int main() { static int q,k; char w; printf("请输入字符穿,并以ENTER键结束\n"); linklist head,p,linker=creat(); puter(linker); printf("请输入插入位置和插入字母\n"); scanf("%d %c",&q,&w); insert(linker,q,w); puter(linker); printf("\n请输入删除位置的序号:\n"); scanf("%d",&k); delet(linker,k); puter(linker); printf("\n"); return 0; }