c语言用链表编写简单程序,C语言单链表简单实现(简单程序复杂化)
ps: goto還是很好玩的。
#include
#include
typedef struct _node{
int value;
struct _node *next;
} node;
typedef struct _list{
node* head;
}list;
void add(list* plist,int number);
void print(list* list);
void deletel(list* list,int number);
void freel(list* list);
int main(int argc, char *argv[]) {
node *head = null;
list list;
int number=0;
list.head=null;
for(;;){
printf("\n這是一個鏈表,現有如下功能 1.添加節點 2.遍歷鏈表 3.查找并刪除節點 4.釋放鏈表 5.退出程序 \n請輸入你想要進行的操作的選項:\n" );
out:
scanf("%d",&number);
switch(number){
case 1:
printf("你選擇了添加節點\n請輸入添加節點的值,輸入-1結束添加\n");
do{
scanf("%d",&number);
if(number != -1){
//添加一個新的節點掛載。
add(&list,number);
}
}while(number != -1);
printf("添加完畢");
break;
case 2:
printf("你選擇了遍歷鏈表\n");
//打印鏈表
print(&list);
break;
case 3:
printf("你選擇了查找并刪除節點,請輸入節點數據\n");
scanf("%d",&number);
//刪除一個節點
deletel(&list,number);
break;
case 4:
printf("你選擇了釋放鏈表");
//釋放鏈表
freel(&list);
printf("釋放完畢");
break;
case 5:
goto end;
default :
printf("輸入錯誤,請重新輸入\n");
goto out;
}
}
end:
printf("拜拜");
return 0;
}
void add(list* plist,int number){
node *p =(node*)malloc(sizeof(node));
p->value =number;
p->next =null;
node *last =plist->head;
if(last){
while(last->next){
last = last->next;
}
last->next=p;
}else{
plist->head = p;
}
}
//遍歷鏈表
void print(list* list){
node *p;
for(p=list->head;p;p=p->next){
printf("%d\t",p->value);
}
printf("\n");
}
//查找并刪除節點
void deletel(list* list,int number){
node* p;
int isfound =0;
for(p=list->head;p;p=p->next){
if(p->value==number){
printf("找到了\n");
isfound = 1;
break ;
}
}
if(!isfound){
printf("沒找到");
}
node *q;
for(q=null,p=list->head;p;q=p,p=p->next){
if(p->value==number){
if(q){
q->next = p->next;
}else{
list->head=p->next;
}
free(p);
printf("已經刪除");
break ;
}
}
}
//釋放鏈表
void freel(list* list){
node *q;
node* p;
for(p=list->head;p;p=q){
q=p->next;
free(p);
}
}
讀書和健身總有一個在路上
總結
以上是生活随笔為你收集整理的c语言用链表编写简单程序,C语言单链表简单实现(简单程序复杂化)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阴阳师悬赏封印怎么获得
- 下一篇: 苹果a9相当于骁龙多少